dynamoid 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. data/Dynamoid.gemspec +65 -3
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +6 -0
  4. data/README.markdown +117 -22
  5. data/Rakefile +22 -9
  6. data/VERSION +1 -1
  7. data/doc/.nojekyll +0 -0
  8. data/doc/Dynamoid.html +300 -0
  9. data/doc/Dynamoid/Adapter.html +1387 -0
  10. data/doc/Dynamoid/Adapter/AwsSdk.html +1561 -0
  11. data/doc/Dynamoid/Adapter/Local.html +1487 -0
  12. data/doc/Dynamoid/Associations.html +131 -0
  13. data/doc/Dynamoid/Associations/Association.html +1706 -0
  14. data/doc/Dynamoid/Associations/BelongsTo.html +339 -0
  15. data/doc/Dynamoid/Associations/ClassMethods.html +723 -0
  16. data/doc/Dynamoid/Associations/HasAndBelongsToMany.html +339 -0
  17. data/doc/Dynamoid/Associations/HasMany.html +339 -0
  18. data/doc/Dynamoid/Associations/HasOne.html +339 -0
  19. data/doc/Dynamoid/Components.html +202 -0
  20. data/doc/Dynamoid/Config.html +395 -0
  21. data/doc/Dynamoid/Config/Options.html +609 -0
  22. data/doc/Dynamoid/Criteria.html +131 -0
  23. data/doc/Dynamoid/Criteria/Chain.html +759 -0
  24. data/doc/Dynamoid/Criteria/ClassMethods.html +98 -0
  25. data/doc/Dynamoid/Document.html +512 -0
  26. data/doc/Dynamoid/Document/ClassMethods.html +581 -0
  27. data/doc/Dynamoid/Errors.html +118 -0
  28. data/doc/Dynamoid/Errors/DocumentNotValid.html +210 -0
  29. data/doc/Dynamoid/Errors/Error.html +130 -0
  30. data/doc/Dynamoid/Errors/InvalidField.html +133 -0
  31. data/doc/Dynamoid/Errors/MissingRangeKey.html +133 -0
  32. data/doc/Dynamoid/Fields.html +649 -0
  33. data/doc/Dynamoid/Fields/ClassMethods.html +264 -0
  34. data/doc/Dynamoid/Finders.html +128 -0
  35. data/doc/Dynamoid/Finders/ClassMethods.html +502 -0
  36. data/doc/Dynamoid/Indexes.html +308 -0
  37. data/doc/Dynamoid/Indexes/ClassMethods.html +351 -0
  38. data/doc/Dynamoid/Indexes/Index.html +1089 -0
  39. data/doc/Dynamoid/Persistence.html +653 -0
  40. data/doc/Dynamoid/Persistence/ClassMethods.html +568 -0
  41. data/doc/Dynamoid/Validations.html +399 -0
  42. data/doc/_index.html +439 -0
  43. data/doc/class_list.html +47 -0
  44. data/doc/css/common.css +1 -0
  45. data/doc/css/full_list.css +55 -0
  46. data/doc/css/style.css +322 -0
  47. data/doc/file.LICENSE.html +66 -0
  48. data/doc/file.README.html +279 -0
  49. data/doc/file_list.html +52 -0
  50. data/doc/frames.html +13 -0
  51. data/doc/index.html +279 -0
  52. data/doc/js/app.js +205 -0
  53. data/doc/js/full_list.js +173 -0
  54. data/doc/js/jquery.js +16 -0
  55. data/doc/method_list.html +1054 -0
  56. data/doc/top-level-namespace.html +105 -0
  57. data/lib/dynamoid.rb +2 -1
  58. data/lib/dynamoid/adapter.rb +77 -6
  59. data/lib/dynamoid/adapter/aws_sdk.rb +96 -16
  60. data/lib/dynamoid/adapter/local.rb +84 -15
  61. data/lib/dynamoid/associations.rb +53 -4
  62. data/lib/dynamoid/associations/association.rb +154 -26
  63. data/lib/dynamoid/associations/belongs_to.rb +32 -6
  64. data/lib/dynamoid/associations/has_and_belongs_to_many.rb +29 -3
  65. data/lib/dynamoid/associations/has_many.rb +30 -4
  66. data/lib/dynamoid/associations/has_one.rb +26 -3
  67. data/lib/dynamoid/components.rb +7 -5
  68. data/lib/dynamoid/config.rb +15 -2
  69. data/lib/dynamoid/config/options.rb +8 -0
  70. data/lib/dynamoid/criteria.rb +7 -2
  71. data/lib/dynamoid/criteria/chain.rb +55 -8
  72. data/lib/dynamoid/document.rb +68 -7
  73. data/lib/dynamoid/errors.rb +17 -2
  74. data/lib/dynamoid/fields.rb +44 -1
  75. data/lib/dynamoid/finders.rb +32 -6
  76. data/lib/dynamoid/indexes.rb +22 -2
  77. data/lib/dynamoid/indexes/index.rb +48 -7
  78. data/lib/dynamoid/persistence.rb +111 -51
  79. data/lib/dynamoid/validations.rb +36 -0
  80. data/spec/app/models/address.rb +2 -1
  81. data/spec/app/models/camel_case.rb +11 -0
  82. data/spec/app/models/magazine.rb +4 -1
  83. data/spec/app/models/sponsor.rb +3 -1
  84. data/spec/app/models/subscription.rb +5 -1
  85. data/spec/app/models/user.rb +10 -1
  86. data/spec/dynamoid/associations/association_spec.rb +67 -1
  87. data/spec/dynamoid/associations/belongs_to_spec.rb +16 -1
  88. data/spec/dynamoid/associations/has_and_belongs_to_many_spec.rb +7 -0
  89. data/spec/dynamoid/associations/has_many_spec.rb +14 -0
  90. data/spec/dynamoid/associations/has_one_spec.rb +10 -1
  91. data/spec/dynamoid/criteria_spec.rb +5 -1
  92. data/spec/dynamoid/document_spec.rb +23 -3
  93. data/spec/dynamoid/fields_spec.rb +10 -1
  94. data/spec/dynamoid/indexes/index_spec.rb +19 -0
  95. data/spec/dynamoid/persistence_spec.rb +24 -0
  96. data/spec/dynamoid/validations_spec.rb +36 -0
  97. metadata +105 -4
@@ -4,6 +4,7 @@ describe "Dynamoid::Associations::HasAndBelongsToMany" do
4
4
 
5
5
  before do
6
6
  @subscription = Subscription.create
7
+ @camel_case = CamelCase.create
7
8
  end
8
9
 
9
10
  it 'determines equality from its records' do
@@ -15,6 +16,7 @@ describe "Dynamoid::Associations::HasAndBelongsToMany" do
15
16
 
16
17
  it 'determines target association correctly' do
17
18
  @subscription.users.send(:target_association).should == :subscriptions
19
+ @camel_case.subscriptions.send(:target_association).should == :camel_cases
18
20
  end
19
21
 
20
22
  it 'determines target attribute' do
@@ -28,6 +30,11 @@ describe "Dynamoid::Associations::HasAndBelongsToMany" do
28
30
  @user.subscriptions.should include @subscription
29
31
  @subscription.users.size.should == 1
30
32
  @subscription.users.should include @user
33
+
34
+ @user = User.create
35
+ @follower = @user.followers.create
36
+ @follower.following.should include @user
37
+ @user.followers.should include @follower
31
38
  end
32
39
 
33
40
  it 'disassociates has_and_belongs_to_many automatically' do
@@ -4,6 +4,8 @@ describe "Dynamoid::Associations::HasMany" do
4
4
 
5
5
  before do
6
6
  @magazine = Magazine.create
7
+ @user = User.create
8
+ @camel_case = CamelCase.create
7
9
  end
8
10
 
9
11
  it 'determines equality from its records' do
@@ -14,15 +16,27 @@ describe "Dynamoid::Associations::HasMany" do
14
16
 
15
17
  it 'determines target association correctly' do
16
18
  @magazine.subscriptions.send(:target_association).should == :magazine
19
+ @user.books.send(:target_association).should == :owner
20
+ @camel_case.users.send(:target_association).should == :camel_case
21
+ end
22
+
23
+ it 'determins target class correctly' do
24
+ @magazine.subscriptions.send(:target_class).should == Subscription
25
+ @user.books.send(:target_class).should == Magazine
17
26
  end
18
27
 
19
28
  it 'determines target attribute' do
20
29
  @magazine.subscriptions.send(:target_attribute).should == :magazine_ids
30
+ @user.books.send(:target_attribute).should == :owner_ids
21
31
  end
22
32
 
23
33
  it 'associates belongs_to automatically' do
24
34
  @subscription = @magazine.subscriptions.create
25
35
 
26
36
  @subscription.magazine.should == @magazine
37
+
38
+ @magazine = @user.books.create
39
+ @magazine.owner.should == @user
27
40
  end
41
+
28
42
  end
@@ -4,11 +4,17 @@ describe "Dynamoid::Associations::HasOne" do
4
4
 
5
5
  before do
6
6
  @magazine = Magazine.create
7
+ @user = User.create
8
+ @camel_case = CamelCase.create
7
9
  end
8
10
 
9
11
  it 'determines nil if it has no associated record' do
10
12
  @magazine.sponsor.should be_nil
11
13
  end
14
+
15
+ it 'determines target association correctly' do
16
+ @camel_case.sponsor.send(:target_association).should == :camel_case
17
+ end
12
18
 
13
19
  it 'returns only one object when associated' do
14
20
  @magazine.sponsor.create
@@ -30,8 +36,11 @@ describe "Dynamoid::Associations::HasOne" do
30
36
 
31
37
  it 'associates belongs_to automatically' do
32
38
  @sponsor = @magazine.sponsor.create
33
-
39
+ @sponsor.magazine.should == @magazine
34
40
  @magazine.sponsor.size.should == 1
35
41
  @magazine.sponsor.should == @sponsor
42
+
43
+ @subscription = @user.monthly.create
44
+ @subscription.customer.should == @user
36
45
  end
37
46
  end
@@ -17,6 +17,7 @@ describe "Dynamoid::Criteria" do
17
17
 
18
18
  it 'returns all records' do
19
19
  User.all.should =~ [@user1, @user2]
20
+ User.all.first.new_record.should be_false
20
21
  end
21
22
 
22
23
  it 'returns empty attributes for where' do
@@ -28,7 +29,10 @@ describe "Dynamoid::Criteria" do
28
29
  end
29
30
 
30
31
  it 'passes each to all members' do
31
- User.each{|u| u.id.should == @user1.id || @user2.id}
32
+ User.each do |u|
33
+ u.id.should == @user1.id || @user2.id
34
+ u.new_record.should be_false
35
+ end
32
36
  end
33
37
 
34
38
  end
@@ -6,7 +6,7 @@ describe "Dynamoid::Document" do
6
6
  @address = Address.new
7
7
 
8
8
  @address.new_record.should be_true
9
- @address.attributes.should == {:id=>nil, :created_at=>nil, :updated_at=>nil, :city=>nil}
9
+ @address.attributes.should == {:id=>nil, :created_at=>nil, :updated_at=>nil, :city=>nil, :options=>nil}
10
10
  end
11
11
 
12
12
  it 'initializes a new document with attributes' do
@@ -14,7 +14,16 @@ describe "Dynamoid::Document" do
14
14
 
15
15
  @address.new_record.should be_true
16
16
 
17
- @address.attributes.should == {:id=>nil, :created_at=>nil, :updated_at=>nil, :city=>"Chicago"}
17
+ @address.attributes.should == {:id=>nil, :created_at=>nil, :updated_at=>nil, :city=>"Chicago", :options=>nil}
18
+ end
19
+
20
+ it 'allows interception of write_attribute on load' do
21
+ class Model
22
+ include Dynamoid::Document
23
+ field :city
24
+ def city=(value); self[:city] = value.downcase; end
25
+ end
26
+ Model.new(:city => "Chicago").city.should == "chicago"
18
27
  end
19
28
 
20
29
  it 'creates a new document' do
@@ -23,13 +32,19 @@ describe "Dynamoid::Document" do
23
32
  @address.new_record.should be_false
24
33
  @address.id.should_not be_nil
25
34
  end
35
+
36
+ it 'knows if a document exists or not' do
37
+ @address = Address.create(:city => 'Chicago')
38
+ Address.exists?(@address.id).should be_true
39
+ Address.exists?("does-not-exist").should be_false
40
+ end
26
41
 
27
42
  it 'tests equivalency with itself' do
28
43
  @address = Address.create(:city => 'Chicago')
29
44
 
30
45
  @address.should == @address
31
46
  end
32
-
47
+
33
48
  it 'is not equivalent to another document' do
34
49
  @address.should_not == Address.create
35
50
  end
@@ -39,6 +54,11 @@ describe "Dynamoid::Document" do
39
54
  @address.should_not == "test"
40
55
  end
41
56
 
57
+ it "isn't equal to nil" do
58
+ @address = Address.create(:city => 'Chicago')
59
+ @address.should_not == nil
60
+ end
61
+
42
62
  it 'gets errors courtesy of ActiveModel' do
43
63
  @address = Address.create(:city => 'Chicago')
44
64
 
@@ -74,9 +74,18 @@ describe "Dynamoid::Fields" do
74
74
  @address[:city].should == 'Chicago'
75
75
  @address.id.should == @original_id
76
76
  end
77
+
78
+ it 'adds in dirty methods for attributes' do
79
+ @address.city = 'Chicago'
80
+ @address.save
81
+
82
+ @address.city = 'San Francisco'
83
+
84
+ @address.city_was.should == 'Chicago'
85
+ end
77
86
 
78
87
  it 'returns all attributes' do
79
- Address.attributes.should == {:id=>{:type=>:string}, :created_at=>{:type=>:datetime}, :updated_at=>{:type=>:datetime}, :city=>{:type=>:string}}
88
+ Address.attributes.should == {:id=>{:type=>:string}, :created_at=>{:type=>:datetime}, :updated_at=>{:type=>:datetime}, :city=>{:type=>:string}, :options=>{:type=>:serialized}}
80
89
  end
81
90
  end
82
91
 
@@ -53,6 +53,15 @@ describe "Dynamoid::Indexes::Index" do
53
53
  @index.values(@user).should == {:hash_value => 'Josh.test123', :range_value => @time.to_f}
54
54
  end
55
55
 
56
+ it 'accepts values from an object and returns changed values' do
57
+ @user = User.new(:name => 'Josh', :password => 'test123', :created_at => @time)
58
+ @user.name = 'Justin'
59
+
60
+ @index.values(@user, true).should == {:hash_value => 'Josh.test123', :range_value => @time.to_f}
61
+
62
+ @index.values(@user).should == {:hash_value => 'Justin.test123', :range_value => @time.to_f}
63
+ end
64
+
56
65
  it 'saves an object to the index it is associated with' do
57
66
  @index = Dynamoid::Indexes::Index.new(User, :name)
58
67
  @user = User.new(:name => 'Josh', :password => 'test123', :created_at => @time, :id => 'test123')
@@ -81,4 +90,14 @@ describe "Dynamoid::Indexes::Index" do
81
90
  Dynamoid::Adapter.read("dynamoid_tests_index_user_names", 'Josh')[:ids].should be_nil
82
91
  end
83
92
 
93
+ it 'updates an object by removing it from its previous index and adding it to its new one' do
94
+ @index = Dynamoid::Indexes::Index.new(User, :name)
95
+ @user = User.create(:name => 'Josh', :password => 'test123', :last_logged_in_at => @time, :id => 'test123')
96
+
97
+ @user.update_attributes(:name => 'Justin')
98
+
99
+ Dynamoid::Adapter.read("dynamoid_tests_index_user_names", 'Josh')[:ids].should be_nil
100
+ Dynamoid::Adapter.read("dynamoid_tests_index_user_names", 'Justin')[:ids].should == Set['test123']
101
+ end
102
+
84
103
  end
@@ -80,6 +80,20 @@ describe "Dynamoid::Persistence" do
80
80
 
81
81
  @subscription.send(:dump)[:magazine_ids].should == Set[@magazine.id]
82
82
  end
83
+
84
+ it 'handles nil attributes properly' do
85
+ Address.undump(nil).should be_a(Hash)
86
+ end
87
+
88
+ it 'dumps and undump a serialized field' do
89
+ @address.options = (hash = {:x => [1, 2], "foobar" => 3.14})
90
+ Address.undump(@address.send(:dump))[:options].should == hash
91
+ end
92
+
93
+ it 'loads a hash into a serialized field' do
94
+ hash = {foo: :bar}
95
+ Address.new(options: hash).options.should == hash
96
+ end
83
97
 
84
98
  it 'loads attributes from a hash' do
85
99
  @time = DateTime.now
@@ -88,5 +102,15 @@ describe "Dynamoid::Persistence" do
88
102
  User.undump(@hash)[:name].should == 'Josh'
89
103
  User.undump(@hash)[:created_at].to_f == @time.to_f
90
104
  end
105
+
106
+ it 'tracks previous changes on save or update' do
107
+ @address.city = 'Chicago'
108
+ @address.save
109
+
110
+ @address.city = 'San Francisco'
111
+ @address.save
112
+
113
+ @address.city_was.should == 'Chicago'
114
+ end
91
115
 
92
116
  end
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Dynamoid::Validations" do
4
+ before do
5
+ @document = Class.new do
6
+ include Dynamoid::Document
7
+
8
+ def self.name
9
+ 'Document'
10
+ end
11
+ end
12
+ end
13
+
14
+ it 'validates presence of' do
15
+ @document.field :name
16
+ @document.validates_presence_of :name
17
+ doc = @document.new
18
+ doc.save.should be_false
19
+ doc.new_record.should be_true
20
+ doc.name = 'secret'
21
+ doc.save.should_not be_false
22
+ doc.errors.should be_empty
23
+ end
24
+
25
+ it 'raises document not found' do
26
+ @document.field :name
27
+ @document.validates_presence_of :name
28
+ doc = @document.new
29
+ expect { doc.save! }.to raise_error(Dynamoid::Errors::DocumentNotValid)
30
+
31
+ expect { @document.create! }.to raise_error(Dynamoid::Errors::DocumentNotValid)
32
+
33
+ doc = @document.create!(:name => 'test')
34
+ doc.errors.should be_empty
35
+ end
36
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-15 00:00:00.000000000 Z
12
+ date: 2012-03-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -155,6 +155,54 @@ dependencies:
155
155
  - - ! '>='
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: yard
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: redcarpet
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - '='
180
+ - !ruby/object:Gem::Version
181
+ version: 1.17.2
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - '='
188
+ - !ruby/object:Gem::Version
189
+ version: 1.17.2
190
+ - !ruby/object:Gem::Dependency
191
+ name: github-markup
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
158
206
  description: Dynamoid is an ORM for Amazon's DynamoDB that supports offline development,
159
207
  associations, querying, and everything else you'd expect from an ActiveRecord-style
160
208
  replacement.
@@ -174,6 +222,56 @@ files:
174
222
  - README.markdown
175
223
  - Rakefile
176
224
  - VERSION
225
+ - doc/.nojekyll
226
+ - doc/Dynamoid.html
227
+ - doc/Dynamoid/Adapter.html
228
+ - doc/Dynamoid/Adapter/AwsSdk.html
229
+ - doc/Dynamoid/Adapter/Local.html
230
+ - doc/Dynamoid/Associations.html
231
+ - doc/Dynamoid/Associations/Association.html
232
+ - doc/Dynamoid/Associations/BelongsTo.html
233
+ - doc/Dynamoid/Associations/ClassMethods.html
234
+ - doc/Dynamoid/Associations/HasAndBelongsToMany.html
235
+ - doc/Dynamoid/Associations/HasMany.html
236
+ - doc/Dynamoid/Associations/HasOne.html
237
+ - doc/Dynamoid/Components.html
238
+ - doc/Dynamoid/Config.html
239
+ - doc/Dynamoid/Config/Options.html
240
+ - doc/Dynamoid/Criteria.html
241
+ - doc/Dynamoid/Criteria/Chain.html
242
+ - doc/Dynamoid/Criteria/ClassMethods.html
243
+ - doc/Dynamoid/Document.html
244
+ - doc/Dynamoid/Document/ClassMethods.html
245
+ - doc/Dynamoid/Errors.html
246
+ - doc/Dynamoid/Errors/DocumentNotValid.html
247
+ - doc/Dynamoid/Errors/Error.html
248
+ - doc/Dynamoid/Errors/InvalidField.html
249
+ - doc/Dynamoid/Errors/MissingRangeKey.html
250
+ - doc/Dynamoid/Fields.html
251
+ - doc/Dynamoid/Fields/ClassMethods.html
252
+ - doc/Dynamoid/Finders.html
253
+ - doc/Dynamoid/Finders/ClassMethods.html
254
+ - doc/Dynamoid/Indexes.html
255
+ - doc/Dynamoid/Indexes/ClassMethods.html
256
+ - doc/Dynamoid/Indexes/Index.html
257
+ - doc/Dynamoid/Persistence.html
258
+ - doc/Dynamoid/Persistence/ClassMethods.html
259
+ - doc/Dynamoid/Validations.html
260
+ - doc/_index.html
261
+ - doc/class_list.html
262
+ - doc/css/common.css
263
+ - doc/css/full_list.css
264
+ - doc/css/style.css
265
+ - doc/file.LICENSE.html
266
+ - doc/file.README.html
267
+ - doc/file_list.html
268
+ - doc/frames.html
269
+ - doc/index.html
270
+ - doc/js/app.js
271
+ - doc/js/full_list.js
272
+ - doc/js/jquery.js
273
+ - doc/method_list.html
274
+ - doc/top-level-namespace.html
177
275
  - lib/dynamoid.rb
178
276
  - lib/dynamoid/adapter.rb
179
277
  - lib/dynamoid/adapter/aws_sdk.rb
@@ -196,7 +294,9 @@ files:
196
294
  - lib/dynamoid/indexes.rb
197
295
  - lib/dynamoid/indexes/index.rb
198
296
  - lib/dynamoid/persistence.rb
297
+ - lib/dynamoid/validations.rb
199
298
  - spec/app/models/address.rb
299
+ - spec/app/models/camel_case.rb
200
300
  - spec/app/models/magazine.rb
201
301
  - spec/app/models/sponsor.rb
202
302
  - spec/app/models/subscription.rb
@@ -219,6 +319,7 @@ files:
219
319
  - spec/dynamoid/indexes/index_spec.rb
220
320
  - spec/dynamoid/indexes_spec.rb
221
321
  - spec/dynamoid/persistence_spec.rb
322
+ - spec/dynamoid/validations_spec.rb
222
323
  - spec/dynamoid_spec.rb
223
324
  - spec/spec_helper.rb
224
325
  homepage: http://github.com/Veraticus/Dynamoid
@@ -236,7 +337,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
236
337
  version: '0'
237
338
  segments:
238
339
  - 0
239
- hash: -1313456439157708017
340
+ hash: 1952467845042018091
240
341
  required_rubygems_version: !ruby/object:Gem::Requirement
241
342
  none: false
242
343
  requirements:
@@ -245,7 +346,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
346
  version: '0'
246
347
  requirements: []
247
348
  rubyforge_project:
248
- rubygems_version: 1.8.18
349
+ rubygems_version: 1.8.19
249
350
  signing_key:
250
351
  specification_version: 3
251
352
  summary: Dynamoid is an ORM for Amazon's DynamoDB