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.
- 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
|