ar_protobuf_store 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,66 @@
1
+ require "spec_helper"
2
+ require "ar_protobuf_store"
3
+
4
+ begin
5
+ require "protobuf"
6
+ if !Gem.loaded_specs["protobuf"]
7
+ raise LoadError, "Didn't load localshred's ruby_protobuf library!"
8
+ end
9
+
10
+ describe "ArProtobufStore::LocalshredSupport" do
11
+ around(:each) do |example|
12
+ setup_db do
13
+ create_table :foos do |t|
14
+ t.column :extras, :binary
15
+ end
16
+ end
17
+
18
+ example.run
19
+
20
+ teardown_db
21
+ end
22
+
23
+ let(:ar_klass) {
24
+ # Define everything using anonymous classes to reduce leakage.
25
+ extras = Class.new(::Protobuf::Message) do
26
+ optional :uint64, :int_attr, 1
27
+ optional :string, :str_attr, 2
28
+ end
29
+
30
+ Class.new(::ActiveRecord::Base) do
31
+ self.table_name = "foos"
32
+
33
+ include ArProtobufStore
34
+
35
+ protobuf_store :extras, extras
36
+ end
37
+ }
38
+
39
+ describe ArProtobufStore::ClassMethods do
40
+ it "should allow setting fields individually" do
41
+ record = ar_klass.create!
42
+ record.int_attr = 2
43
+ record.str_attr = "TEST"
44
+ record.save
45
+ expect(record.persisted?).to eq(true)
46
+ record_id = record.id
47
+
48
+ record = ar_klass.find(record_id)
49
+ expect(record.int_attr).to eq(2)
50
+ expect(record.str_attr).to eq("TEST")
51
+ end
52
+
53
+ it "should allow setting fields in constructor" do
54
+ record = ar_klass.create!(:int_attr => 2, :str_attr => "TEST")
55
+ expect(record.persisted?).to eq(true)
56
+ record_id = record.id
57
+
58
+ record = ar_klass.find(record_id)
59
+ expect(record.int_attr).to eq(2)
60
+ expect(record.str_attr).to eq("TEST")
61
+ end
62
+ end
63
+ end
64
+ rescue LoadError
65
+ # Ignore: protobuf isn't loaded!
66
+ end
@@ -0,0 +1,69 @@
1
+ require "spec_helper"
2
+ require "ar_protobuf_store"
3
+
4
+ begin
5
+ require "protobuf/message/message"
6
+ require "protobuf/message/enum"
7
+ require "protobuf/message/service"
8
+ require "protobuf/message/extend"
9
+ if !Gem.loaded_specs["ruby_protobuf"]
10
+ raise LoadError, "Didn't load macks' ruby_protobuf library!"
11
+ end
12
+
13
+ describe "ArProtobufStore::MacksSupport" do
14
+ around(:each) do |example|
15
+ setup_db do
16
+ create_table :foos do |t|
17
+ t.column :extras, :binary
18
+ end
19
+ end
20
+
21
+ example.run
22
+
23
+ teardown_db
24
+ end
25
+
26
+ let(:ar_klass) {
27
+ # Define everything using anonymous classes to reduce leakage.
28
+ extras = Class.new(::Protobuf::Message) do
29
+ optional :uint64, :int_attr, 1
30
+ optional :string, :str_attr, 2
31
+ end
32
+
33
+ Class.new(::ActiveRecord::Base) do
34
+ self.table_name = "foos"
35
+
36
+ include ArProtobufStore
37
+
38
+ protobuf_store :extras, extras
39
+ end
40
+ }
41
+
42
+ describe ArProtobufStore::ClassMethods do
43
+ it "should allow setting fields individually" do
44
+ record = ar_klass.create!
45
+ record.int_attr = 2
46
+ record.str_attr = "TEST"
47
+ record.save
48
+ expect(record.persisted?).to eq(true)
49
+ record_id = record.id
50
+
51
+ record = ar_klass.find(record_id)
52
+ expect(record.int_attr).to eq(2)
53
+ expect(record.str_attr).to eq("TEST")
54
+ end
55
+
56
+ it "should allow setting fields in constructor" do
57
+ record = ar_klass.create!(:int_attr => 2, :str_attr => "TEST")
58
+ expect(record.persisted?).to eq(true)
59
+ record_id = record.id
60
+
61
+ record = ar_klass.find(record_id)
62
+ expect(record.int_attr).to eq(2)
63
+ expect(record.str_attr).to eq("TEST")
64
+ end
65
+ end
66
+ end
67
+ rescue LoadError
68
+ # Ignore: protobuf isn't loaded!
69
+ end
@@ -0,0 +1,19 @@
1
+ require "rspec"
2
+ require "ar_protobuf_store"
3
+
4
+ require "active_record"
5
+
6
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
7
+ ActiveRecord::Schema.verbose = false
8
+
9
+ def setup_db(&block)
10
+ # ActiveRecord caches columns options like defaults etc. Clear them!
11
+ ActiveRecord::Base.connection.schema_cache.clear!
12
+ ActiveRecord::Schema.define(:version => 1, &block)
13
+ end
14
+
15
+ def teardown_db
16
+ ActiveRecord::Base.connection.tables.each do |table|
17
+ ActiveRecord::Base.connection.drop_table(table)
18
+ end
19
+ end
metadata ADDED
@@ -0,0 +1,201 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ar_protobuf_store
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Hsiu-Fan Wang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ - - "<="
21
+ - !ruby/object:Gem::Version
22
+ version: 4.1.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - - "<="
31
+ - !ruby/object:Gem::Version
32
+ version: 4.1.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: ruby-protocol-buffers
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.5'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: pry
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.9'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0.9'
61
+ - !ruby/object:Gem::Dependency
62
+ name: sqlite3
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.3'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.3'
75
+ - !ruby/object:Gem::Dependency
76
+ name: appraisal
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 1.0.0
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 1.0.0
89
+ - !ruby/object:Gem::Dependency
90
+ name: rspec
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '2.4'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '2.4'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rubygems-tasks
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0.2'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.2'
117
+ - !ruby/object:Gem::Dependency
118
+ name: yard
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.8'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.8'
131
+ description: Like Ar::Store, but with Protocol Buffers
132
+ email: hfwang@porkbuns.net
133
+ executables: []
134
+ extensions: []
135
+ extra_rdoc_files: []
136
+ files:
137
+ - ".document"
138
+ - ".gitignore"
139
+ - ".rspec"
140
+ - ".travis.yml"
141
+ - ".yardopts"
142
+ - Appraisals
143
+ - ChangeLog.md
144
+ - Gemfile
145
+ - LICENSE
146
+ - LICENSE.txt
147
+ - README.md
148
+ - Rakefile
149
+ - ar_protobuf_store.gemspec
150
+ - gemfiles/rails3.2_protobuf.gemfile
151
+ - gemfiles/rails3.2_protobuf.gemfile.lock
152
+ - gemfiles/rails3.2_ruby_protobuf.gemfile
153
+ - gemfiles/rails3.2_ruby_protobuf.gemfile.lock
154
+ - gemfiles/rails4.0_protobuf.gemfile
155
+ - gemfiles/rails4.0_protobuf.gemfile.lock
156
+ - gemfiles/rails4.0_ruby_protobuf.gemfile
157
+ - gemfiles/rails4.0_ruby_protobuf.gemfile.lock
158
+ - gemfiles/rails4.1_protobuf.gemfile
159
+ - gemfiles/rails4.1_protobuf.gemfile.lock
160
+ - gemfiles/rails4.1_ruby_protobuf.gemfile
161
+ - gemfiles/rails4.1_ruby_protobuf.gemfile.lock
162
+ - lib/ar_protobuf_store.rb
163
+ - lib/ar_protobuf_store/codekitchen_protobuf_parser.rb
164
+ - lib/ar_protobuf_store/protobuf_parser.rb
165
+ - lib/ar_protobuf_store/railtie.rb
166
+ - lib/ar_protobuf_store/version.rb
167
+ - spec/ar_protobuf_store_spec.rb
168
+ - spec/codekitchen_protobuf_spec.rb
169
+ - spec/localshred_protobuf_spec.rb
170
+ - spec/macks_protobuf_spec.rb
171
+ - spec/spec_helper.rb
172
+ homepage: https://rubygems.org/gems/ar_protobuf_store
173
+ licenses:
174
+ - MIT
175
+ metadata: {}
176
+ post_install_message:
177
+ rdoc_options: []
178
+ require_paths:
179
+ - lib
180
+ required_ruby_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ required_rubygems_version: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ requirements: []
191
+ rubyforge_project:
192
+ rubygems_version: 2.2.2
193
+ signing_key:
194
+ specification_version: 4
195
+ summary: Serialize Ar attributes with Protocol Buffers
196
+ test_files:
197
+ - spec/ar_protobuf_store_spec.rb
198
+ - spec/codekitchen_protobuf_spec.rb
199
+ - spec/localshred_protobuf_spec.rb
200
+ - spec/macks_protobuf_spec.rb
201
+ - spec/spec_helper.rb