dynamoid 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Dynamoid.gemspec +65 -3
- data/Gemfile +3 -0
- data/Gemfile.lock +6 -0
- data/README.markdown +117 -22
- data/Rakefile +22 -9
- data/VERSION +1 -1
- data/doc/.nojekyll +0 -0
- data/doc/Dynamoid.html +300 -0
- data/doc/Dynamoid/Adapter.html +1387 -0
- data/doc/Dynamoid/Adapter/AwsSdk.html +1561 -0
- data/doc/Dynamoid/Adapter/Local.html +1487 -0
- data/doc/Dynamoid/Associations.html +131 -0
- data/doc/Dynamoid/Associations/Association.html +1706 -0
- data/doc/Dynamoid/Associations/BelongsTo.html +339 -0
- data/doc/Dynamoid/Associations/ClassMethods.html +723 -0
- data/doc/Dynamoid/Associations/HasAndBelongsToMany.html +339 -0
- data/doc/Dynamoid/Associations/HasMany.html +339 -0
- data/doc/Dynamoid/Associations/HasOne.html +339 -0
- data/doc/Dynamoid/Components.html +202 -0
- data/doc/Dynamoid/Config.html +395 -0
- data/doc/Dynamoid/Config/Options.html +609 -0
- data/doc/Dynamoid/Criteria.html +131 -0
- data/doc/Dynamoid/Criteria/Chain.html +759 -0
- data/doc/Dynamoid/Criteria/ClassMethods.html +98 -0
- data/doc/Dynamoid/Document.html +512 -0
- data/doc/Dynamoid/Document/ClassMethods.html +581 -0
- data/doc/Dynamoid/Errors.html +118 -0
- data/doc/Dynamoid/Errors/DocumentNotValid.html +210 -0
- data/doc/Dynamoid/Errors/Error.html +130 -0
- data/doc/Dynamoid/Errors/InvalidField.html +133 -0
- data/doc/Dynamoid/Errors/MissingRangeKey.html +133 -0
- data/doc/Dynamoid/Fields.html +649 -0
- data/doc/Dynamoid/Fields/ClassMethods.html +264 -0
- data/doc/Dynamoid/Finders.html +128 -0
- data/doc/Dynamoid/Finders/ClassMethods.html +502 -0
- data/doc/Dynamoid/Indexes.html +308 -0
- data/doc/Dynamoid/Indexes/ClassMethods.html +351 -0
- data/doc/Dynamoid/Indexes/Index.html +1089 -0
- data/doc/Dynamoid/Persistence.html +653 -0
- data/doc/Dynamoid/Persistence/ClassMethods.html +568 -0
- data/doc/Dynamoid/Validations.html +399 -0
- data/doc/_index.html +439 -0
- data/doc/class_list.html +47 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +55 -0
- data/doc/css/style.css +322 -0
- data/doc/file.LICENSE.html +66 -0
- data/doc/file.README.html +279 -0
- data/doc/file_list.html +52 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +279 -0
- data/doc/js/app.js +205 -0
- data/doc/js/full_list.js +173 -0
- data/doc/js/jquery.js +16 -0
- data/doc/method_list.html +1054 -0
- data/doc/top-level-namespace.html +105 -0
- data/lib/dynamoid.rb +2 -1
- data/lib/dynamoid/adapter.rb +77 -6
- data/lib/dynamoid/adapter/aws_sdk.rb +96 -16
- data/lib/dynamoid/adapter/local.rb +84 -15
- data/lib/dynamoid/associations.rb +53 -4
- data/lib/dynamoid/associations/association.rb +154 -26
- data/lib/dynamoid/associations/belongs_to.rb +32 -6
- data/lib/dynamoid/associations/has_and_belongs_to_many.rb +29 -3
- data/lib/dynamoid/associations/has_many.rb +30 -4
- data/lib/dynamoid/associations/has_one.rb +26 -3
- data/lib/dynamoid/components.rb +7 -5
- data/lib/dynamoid/config.rb +15 -2
- data/lib/dynamoid/config/options.rb +8 -0
- data/lib/dynamoid/criteria.rb +7 -2
- data/lib/dynamoid/criteria/chain.rb +55 -8
- data/lib/dynamoid/document.rb +68 -7
- data/lib/dynamoid/errors.rb +17 -2
- data/lib/dynamoid/fields.rb +44 -1
- data/lib/dynamoid/finders.rb +32 -6
- data/lib/dynamoid/indexes.rb +22 -2
- data/lib/dynamoid/indexes/index.rb +48 -7
- data/lib/dynamoid/persistence.rb +111 -51
- data/lib/dynamoid/validations.rb +36 -0
- data/spec/app/models/address.rb +2 -1
- data/spec/app/models/camel_case.rb +11 -0
- data/spec/app/models/magazine.rb +4 -1
- data/spec/app/models/sponsor.rb +3 -1
- data/spec/app/models/subscription.rb +5 -1
- data/spec/app/models/user.rb +10 -1
- data/spec/dynamoid/associations/association_spec.rb +67 -1
- data/spec/dynamoid/associations/belongs_to_spec.rb +16 -1
- data/spec/dynamoid/associations/has_and_belongs_to_many_spec.rb +7 -0
- data/spec/dynamoid/associations/has_many_spec.rb +14 -0
- data/spec/dynamoid/associations/has_one_spec.rb +10 -1
- data/spec/dynamoid/criteria_spec.rb +5 -1
- data/spec/dynamoid/document_spec.rb +23 -3
- data/spec/dynamoid/fields_spec.rb +10 -1
- data/spec/dynamoid/indexes/index_spec.rb +19 -0
- data/spec/dynamoid/persistence_spec.rb +24 -0
- data/spec/dynamoid/validations_spec.rb +36 -0
- 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
|
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.
|
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-
|
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:
|
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.
|
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
|