dynamoid 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Dynamoid.gemspec +18 -8
- data/Gemfile +3 -1
- data/Gemfile.lock +48 -24
- data/README.markdown +6 -3
- data/VERSION +1 -1
- data/lib/dynamoid.rb +4 -0
- data/lib/dynamoid/adapter.rb +3 -3
- data/lib/dynamoid/adapter/aws_sdk.rb +19 -13
- data/lib/dynamoid/components.rb +5 -4
- data/lib/dynamoid/config.rb +7 -4
- data/lib/dynamoid/criteria/chain.rb +22 -13
- data/lib/dynamoid/dirty.rb +41 -0
- data/lib/dynamoid/document.rb +55 -26
- data/lib/dynamoid/errors.rb +5 -0
- data/lib/dynamoid/fields.rb +0 -5
- data/lib/dynamoid/finders.rb +60 -12
- data/lib/dynamoid/identity_map.rb +96 -0
- data/lib/dynamoid/indexes/index.rb +1 -1
- data/lib/dynamoid/middleware/identity_map.rb +16 -0
- data/lib/dynamoid/persistence.rb +45 -6
- data/spec/app/models/message.rb +9 -0
- data/spec/app/models/tweet.rb +3 -0
- data/spec/dynamoid/adapter/aws_sdk_spec.rb +34 -34
- data/spec/dynamoid/criteria/chain_spec.rb +17 -9
- data/spec/dynamoid/criteria_spec.rb +8 -2
- data/spec/dynamoid/dirty_spec.rb +49 -0
- data/spec/dynamoid/document_spec.rb +5 -1
- data/spec/dynamoid/fields_spec.rb +47 -17
- data/spec/dynamoid/finders_spec.rb +27 -11
- data/spec/dynamoid/identity_map_spec.rb +45 -0
- data/spec/dynamoid/indexes/index_spec.rb +0 -2
- data/spec/dynamoid/persistence_spec.rb +65 -29
- data/spec/dynamoid_spec.rb +4 -0
- data/spec/spec_helper.rb +21 -25
- metadata +54 -18
- data/lib/dynamoid/adapter/local.rb +0 -196
- data/spec/dynamoid/adapter/local_spec.rb +0 -242
data/Dynamoid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "dynamoid"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Josh Symonds"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-08-22"
|
13
13
|
s.description = "Dynamoid is an ORM for Amazon's DynamoDB that supports offline development, associations, querying, and everything else you'd expect from an ActiveRecord-style replacement."
|
14
14
|
s.email = "josh@joshsymonds.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -81,7 +81,6 @@ Gem::Specification.new do |s|
|
|
81
81
|
"lib/dynamoid.rb",
|
82
82
|
"lib/dynamoid/adapter.rb",
|
83
83
|
"lib/dynamoid/adapter/aws_sdk.rb",
|
84
|
-
"lib/dynamoid/adapter/local.rb",
|
85
84
|
"lib/dynamoid/associations.rb",
|
86
85
|
"lib/dynamoid/associations/association.rb",
|
87
86
|
"lib/dynamoid/associations/belongs_to.rb",
|
@@ -95,23 +94,26 @@ Gem::Specification.new do |s|
|
|
95
94
|
"lib/dynamoid/config/options.rb",
|
96
95
|
"lib/dynamoid/criteria.rb",
|
97
96
|
"lib/dynamoid/criteria/chain.rb",
|
97
|
+
"lib/dynamoid/dirty.rb",
|
98
98
|
"lib/dynamoid/document.rb",
|
99
99
|
"lib/dynamoid/errors.rb",
|
100
100
|
"lib/dynamoid/fields.rb",
|
101
101
|
"lib/dynamoid/finders.rb",
|
102
|
+
"lib/dynamoid/identity_map.rb",
|
102
103
|
"lib/dynamoid/indexes.rb",
|
103
104
|
"lib/dynamoid/indexes/index.rb",
|
105
|
+
"lib/dynamoid/middleware/identity_map.rb",
|
104
106
|
"lib/dynamoid/persistence.rb",
|
105
107
|
"lib/dynamoid/validations.rb",
|
106
108
|
"spec/app/models/address.rb",
|
107
109
|
"spec/app/models/camel_case.rb",
|
108
110
|
"spec/app/models/magazine.rb",
|
111
|
+
"spec/app/models/message.rb",
|
109
112
|
"spec/app/models/sponsor.rb",
|
110
113
|
"spec/app/models/subscription.rb",
|
111
114
|
"spec/app/models/tweet.rb",
|
112
115
|
"spec/app/models/user.rb",
|
113
116
|
"spec/dynamoid/adapter/aws_sdk_spec.rb",
|
114
|
-
"spec/dynamoid/adapter/local_spec.rb",
|
115
117
|
"spec/dynamoid/adapter_spec.rb",
|
116
118
|
"spec/dynamoid/associations/association_spec.rb",
|
117
119
|
"spec/dynamoid/associations/belongs_to_spec.rb",
|
@@ -122,9 +124,11 @@ Gem::Specification.new do |s|
|
|
122
124
|
"spec/dynamoid/config_spec.rb",
|
123
125
|
"spec/dynamoid/criteria/chain_spec.rb",
|
124
126
|
"spec/dynamoid/criteria_spec.rb",
|
127
|
+
"spec/dynamoid/dirty_spec.rb",
|
125
128
|
"spec/dynamoid/document_spec.rb",
|
126
129
|
"spec/dynamoid/fields_spec.rb",
|
127
130
|
"spec/dynamoid/finders_spec.rb",
|
131
|
+
"spec/dynamoid/identity_map_spec.rb",
|
128
132
|
"spec/dynamoid/indexes/index_spec.rb",
|
129
133
|
"spec/dynamoid/indexes_spec.rb",
|
130
134
|
"spec/dynamoid/persistence_spec.rb",
|
@@ -135,7 +139,7 @@ Gem::Specification.new do |s|
|
|
135
139
|
s.homepage = "http://github.com/Veraticus/Dynamoid"
|
136
140
|
s.licenses = ["MIT"]
|
137
141
|
s.require_paths = ["lib"]
|
138
|
-
s.rubygems_version = "1.8.
|
142
|
+
s.rubygems_version = "1.8.23"
|
139
143
|
s.summary = "Dynamoid is an ORM for Amazon's DynamoDB"
|
140
144
|
|
141
145
|
if s.respond_to? :specification_version then
|
@@ -145,7 +149,6 @@ Gem::Specification.new do |s|
|
|
145
149
|
s.add_runtime_dependency(%q<activemodel>, [">= 0"])
|
146
150
|
s.add_runtime_dependency(%q<tzinfo>, [">= 0"])
|
147
151
|
s.add_runtime_dependency(%q<aws-sdk>, [">= 0"])
|
148
|
-
s.add_development_dependency(%q<mocha>, [">= 0"])
|
149
152
|
s.add_development_dependency(%q<rake>, [">= 0"])
|
150
153
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
151
154
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
@@ -153,11 +156,13 @@ Gem::Specification.new do |s|
|
|
153
156
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
154
157
|
s.add_development_dependency(%q<redcarpet>, ["= 1.17.2"])
|
155
158
|
s.add_development_dependency(%q<github-markup>, [">= 0"])
|
159
|
+
s.add_development_dependency(%q<pry>, [">= 0"])
|
160
|
+
s.add_development_dependency(%q<fake_dynamo>, [">= 0"])
|
161
|
+
s.add_development_dependency(%q<mocha>, ["= 0.10.0"])
|
156
162
|
else
|
157
163
|
s.add_dependency(%q<activemodel>, [">= 0"])
|
158
164
|
s.add_dependency(%q<tzinfo>, [">= 0"])
|
159
165
|
s.add_dependency(%q<aws-sdk>, [">= 0"])
|
160
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
161
166
|
s.add_dependency(%q<rake>, [">= 0"])
|
162
167
|
s.add_dependency(%q<rspec>, [">= 0"])
|
163
168
|
s.add_dependency(%q<bundler>, [">= 0"])
|
@@ -165,12 +170,14 @@ Gem::Specification.new do |s|
|
|
165
170
|
s.add_dependency(%q<yard>, [">= 0"])
|
166
171
|
s.add_dependency(%q<redcarpet>, ["= 1.17.2"])
|
167
172
|
s.add_dependency(%q<github-markup>, [">= 0"])
|
173
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
174
|
+
s.add_dependency(%q<fake_dynamo>, [">= 0"])
|
175
|
+
s.add_dependency(%q<mocha>, ["= 0.10.0"])
|
168
176
|
end
|
169
177
|
else
|
170
178
|
s.add_dependency(%q<activemodel>, [">= 0"])
|
171
179
|
s.add_dependency(%q<tzinfo>, [">= 0"])
|
172
180
|
s.add_dependency(%q<aws-sdk>, [">= 0"])
|
173
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
174
181
|
s.add_dependency(%q<rake>, [">= 0"])
|
175
182
|
s.add_dependency(%q<rspec>, [">= 0"])
|
176
183
|
s.add_dependency(%q<bundler>, [">= 0"])
|
@@ -178,6 +185,9 @@ Gem::Specification.new do |s|
|
|
178
185
|
s.add_dependency(%q<yard>, [">= 0"])
|
179
186
|
s.add_dependency(%q<redcarpet>, ["= 1.17.2"])
|
180
187
|
s.add_dependency(%q<github-markup>, [">= 0"])
|
188
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
189
|
+
s.add_dependency(%q<fake_dynamo>, [">= 0"])
|
190
|
+
s.add_dependency(%q<mocha>, ["= 0.10.0"])
|
181
191
|
end
|
182
192
|
end
|
183
193
|
|
data/Gemfile
CHANGED
@@ -10,7 +10,6 @@ gem 'aws-sdk'
|
|
10
10
|
# Add dependencies to develop your gem here.
|
11
11
|
# Include everything needed to run rake, tests, features, etc.
|
12
12
|
group :development do
|
13
|
-
gem "mocha"
|
14
13
|
gem "rake"
|
15
14
|
gem "rspec"
|
16
15
|
gem "bundler"
|
@@ -18,4 +17,7 @@ group :development do
|
|
18
17
|
gem "yard"
|
19
18
|
gem "redcarpet", '1.17.2'
|
20
19
|
gem 'github-markup'
|
20
|
+
gem 'pry'
|
21
|
+
gem 'fake_dynamo'
|
22
|
+
gem "mocha", '0.10.0'
|
21
23
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,49 +1,71 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
activemodel (3.
|
5
|
-
activesupport (= 3.
|
4
|
+
activemodel (3.2.8)
|
5
|
+
activesupport (= 3.2.8)
|
6
6
|
builder (~> 3.0.0)
|
7
|
+
activesupport (3.2.8)
|
7
8
|
i18n (~> 0.6)
|
8
|
-
activesupport (3.1.3)
|
9
9
|
multi_json (~> 1.0)
|
10
|
-
aws-sdk (1.
|
10
|
+
aws-sdk (1.6.4)
|
11
11
|
httparty (~> 0.7)
|
12
12
|
json (~> 1.4)
|
13
13
|
nokogiri (>= 1.4.4)
|
14
14
|
uuidtools (~> 2.1)
|
15
15
|
builder (3.0.0)
|
16
|
+
coderay (1.0.7)
|
16
17
|
diff-lcs (1.1.3)
|
18
|
+
fake_dynamo (0.0.9)
|
19
|
+
activesupport
|
20
|
+
json
|
21
|
+
sinatra
|
17
22
|
git (1.2.5)
|
18
|
-
github-markup (0.7.
|
19
|
-
httparty (0.8.
|
20
|
-
multi_json
|
23
|
+
github-markup (0.7.4)
|
24
|
+
httparty (0.8.3)
|
25
|
+
multi_json (~> 1.0)
|
21
26
|
multi_xml
|
22
27
|
i18n (0.6.0)
|
23
|
-
jeweler (1.
|
28
|
+
jeweler (1.8.4)
|
24
29
|
bundler (~> 1.0)
|
25
30
|
git (>= 1.2.5)
|
26
31
|
rake
|
27
|
-
|
32
|
+
rdoc
|
33
|
+
json (1.7.5)
|
28
34
|
metaclass (0.0.1)
|
35
|
+
method_source (0.8)
|
29
36
|
mocha (0.10.0)
|
30
37
|
metaclass (~> 0.0.1)
|
31
|
-
multi_json (1.
|
32
|
-
multi_xml (0.
|
33
|
-
nokogiri (1.5.
|
38
|
+
multi_json (1.3.6)
|
39
|
+
multi_xml (0.5.1)
|
40
|
+
nokogiri (1.5.5)
|
41
|
+
pry (0.9.10)
|
42
|
+
coderay (~> 1.0.5)
|
43
|
+
method_source (~> 0.8)
|
44
|
+
slop (~> 3.3.1)
|
45
|
+
rack (1.4.1)
|
46
|
+
rack-protection (1.2.0)
|
47
|
+
rack
|
34
48
|
rake (0.9.2.2)
|
49
|
+
rdoc (3.12)
|
50
|
+
json (~> 1.4)
|
35
51
|
redcarpet (1.17.2)
|
36
|
-
rspec (2.
|
37
|
-
rspec-core (~> 2.
|
38
|
-
rspec-expectations (~> 2.
|
39
|
-
rspec-mocks (~> 2.
|
40
|
-
rspec-core (2.
|
41
|
-
rspec-expectations (2.
|
42
|
-
diff-lcs (~> 1.1.
|
43
|
-
rspec-mocks (2.
|
44
|
-
|
45
|
-
|
46
|
-
|
52
|
+
rspec (2.11.0)
|
53
|
+
rspec-core (~> 2.11.0)
|
54
|
+
rspec-expectations (~> 2.11.0)
|
55
|
+
rspec-mocks (~> 2.11.0)
|
56
|
+
rspec-core (2.11.1)
|
57
|
+
rspec-expectations (2.11.2)
|
58
|
+
diff-lcs (~> 1.1.3)
|
59
|
+
rspec-mocks (2.11.2)
|
60
|
+
sinatra (1.3.3)
|
61
|
+
rack (~> 1.3, >= 1.3.6)
|
62
|
+
rack-protection (~> 1.2)
|
63
|
+
tilt (~> 1.3, >= 1.3.3)
|
64
|
+
slop (3.3.2)
|
65
|
+
tilt (1.3.3)
|
66
|
+
tzinfo (0.3.33)
|
67
|
+
uuidtools (2.1.3)
|
68
|
+
yard (0.8.2.1)
|
47
69
|
|
48
70
|
PLATFORMS
|
49
71
|
ruby
|
@@ -52,9 +74,11 @@ DEPENDENCIES
|
|
52
74
|
activemodel
|
53
75
|
aws-sdk
|
54
76
|
bundler
|
77
|
+
fake_dynamo
|
55
78
|
github-markup
|
56
79
|
jeweler
|
57
|
-
mocha
|
80
|
+
mocha (= 0.10.0)
|
81
|
+
pry
|
58
82
|
rake
|
59
83
|
redcarpet (= 1.17.2)
|
60
84
|
rspec
|
data/README.markdown
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Dynamoid
|
2
2
|
|
3
|
-
Dynamoid is an ORM for Amazon's DynamoDB for Ruby applications. It
|
3
|
+
Dynamoid is an ORM for Amazon's DynamoDB for Ruby applications. It
|
4
|
+
provides similar functionality to ActiveRecord and improves on
|
5
|
+
Amazon's existing
|
6
|
+
[HashModel](http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS/Record/HashModel.html)
|
7
|
+
by providing better searching tools and native association support.
|
4
8
|
|
5
9
|
DynamoDB is not like other document-based databases you might know, and is very different indeed from relational databases. It sacrifices anything beyond the simplest relational queries and transactional support to provide a fast, cost-efficient, and highly durable storage solution. If your database requires complicated relational queries and transaction support, then this modest Gem cannot provide them for you, and neither can DynamoDB. In those cases you would do better to look elsewhere for your database needs.
|
6
10
|
|
@@ -18,7 +22,6 @@ Then you need to initialize it to get it going. Put code similar to this somewhe
|
|
18
22
|
|
19
23
|
```ruby
|
20
24
|
Dynamoid.configure do |config|
|
21
|
-
config.adapter = 'local' # This adapter allows offline development without connecting to the DynamoDB servers. Data is *NOT* persisted.
|
22
25
|
# config.adapter = 'aws_sdk' # This adapter establishes a connection to the DynamoDB servers using Amazon's own AWS gem.
|
23
26
|
# config.access_key = 'access_key' # If connecting to DynamoDB, your access key is required.
|
24
27
|
# config.secret_key = 'secret_key' # So is your secret key.
|
@@ -254,7 +257,7 @@ Also, without contributors the project wouldn't be nearly as awesome. So many th
|
|
254
257
|
|
255
258
|
## Running the tests
|
256
259
|
|
257
|
-
|
260
|
+
Running the tests is fairly simple. In one window, run `fake_dynamo`, and in the other, use `rake`.
|
258
261
|
|
259
262
|
## Copyright
|
260
263
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/lib/dynamoid.rb
CHANGED
@@ -13,14 +13,18 @@ require 'dynamoid/fields'
|
|
13
13
|
require 'dynamoid/indexes'
|
14
14
|
require 'dynamoid/associations'
|
15
15
|
require 'dynamoid/persistence'
|
16
|
+
require 'dynamoid/dirty'
|
16
17
|
require 'dynamoid/validations'
|
17
18
|
require 'dynamoid/criteria'
|
18
19
|
require 'dynamoid/finders'
|
20
|
+
require 'dynamoid/identity_map'
|
19
21
|
require 'dynamoid/config'
|
20
22
|
require 'dynamoid/components'
|
21
23
|
require 'dynamoid/document'
|
22
24
|
require 'dynamoid/adapter'
|
23
25
|
|
26
|
+
require 'dynamoid/middleware/identity_map'
|
27
|
+
|
24
28
|
module Dynamoid
|
25
29
|
extend self
|
26
30
|
|
data/lib/dynamoid/adapter.rb
CHANGED
@@ -7,7 +7,7 @@ module Dynamoid
|
|
7
7
|
extend self
|
8
8
|
attr_accessor :tables
|
9
9
|
|
10
|
-
# The actual adapter currently in use: presently
|
10
|
+
# The actual adapter currently in use: presently AwsSdk.
|
11
11
|
#
|
12
12
|
# @since 0.2.0
|
13
13
|
def adapter
|
@@ -164,8 +164,8 @@ module Dynamoid
|
|
164
164
|
# Delegate all methods that aren't defind here to the underlying adapter.
|
165
165
|
#
|
166
166
|
# @since 0.2.0
|
167
|
-
def method_missing(method, *args)
|
168
|
-
return benchmark(method, *args) {adapter.send(method, *args)} if @adapter.respond_to?(method)
|
167
|
+
def method_missing(method, *args, &block)
|
168
|
+
return benchmark(method, *args) {adapter.send(method, *args, &block)} if @adapter.respond_to?(method)
|
169
169
|
super
|
170
170
|
end
|
171
171
|
|
@@ -18,7 +18,7 @@ module Dynamoid
|
|
18
18
|
#
|
19
19
|
# @since 0.2.0
|
20
20
|
def connect!
|
21
|
-
@@connection = AWS::DynamoDB.new(:access_key_id => Dynamoid::Config.access_key, :secret_access_key => Dynamoid::Config.secret_key, :dynamo_db_endpoint => Dynamoid::Config.endpoint)
|
21
|
+
@@connection = AWS::DynamoDB.new(:access_key_id => Dynamoid::Config.access_key, :secret_access_key => Dynamoid::Config.secret_key, :dynamo_db_endpoint => Dynamoid::Config.endpoint, :use_ssl => Dynamoid::Config.use_ssl, :dynamo_db_port => Dynamoid::Config.port)
|
22
22
|
end
|
23
23
|
|
24
24
|
# Return the established connection.
|
@@ -63,7 +63,7 @@ module Dynamoid
|
|
63
63
|
#
|
64
64
|
# @since 0.2.0
|
65
65
|
def create_table(table_name, key = :id, options = {})
|
66
|
-
|
66
|
+
Dynamoid.logger.info "Creating #{table_name} table. This could take a while."
|
67
67
|
options[:hash_key] ||= {key.to_sym => :string}
|
68
68
|
read_capacity = options[:read_capacity] || Dynamoid::Config.read_capacity
|
69
69
|
write_capacity = options[:write_capacity] || Dynamoid::Config.write_capacity
|
@@ -82,11 +82,7 @@ module Dynamoid
|
|
82
82
|
def delete_item(table_name, key, options = {})
|
83
83
|
range_key = options.delete(:range_key)
|
84
84
|
table = get_table(table_name)
|
85
|
-
result =
|
86
|
-
table.items.at(key, range_key)
|
87
|
-
else
|
88
|
-
table.items[key]
|
89
|
-
end
|
85
|
+
result = table.items.at(key, range_key)
|
90
86
|
result.delete unless result.attributes.to_h.empty?
|
91
87
|
true
|
92
88
|
end
|
@@ -98,7 +94,10 @@ module Dynamoid
|
|
98
94
|
#
|
99
95
|
# @since 0.2.0
|
100
96
|
def delete_table(table_name)
|
101
|
-
|
97
|
+
Dynamoid.logger.info "Deleting #{table_name} table. This could take a while."
|
98
|
+
table = @@connection.tables[table_name]
|
99
|
+
table.delete
|
100
|
+
sleep 0.5 while table.exists? == true
|
102
101
|
end
|
103
102
|
|
104
103
|
# @todo Add a DescribeTable method.
|
@@ -119,11 +118,8 @@ module Dynamoid
|
|
119
118
|
range_key = options.delete(:range_key)
|
120
119
|
table = get_table(table_name)
|
121
120
|
|
122
|
-
result =
|
123
|
-
|
124
|
-
else
|
125
|
-
table.items[key]
|
126
|
-
end.attributes.to_h(options)
|
121
|
+
result = table.items.at(key, range_key).attributes.to_h(options)
|
122
|
+
|
127
123
|
if result.empty?
|
128
124
|
nil
|
129
125
|
else
|
@@ -131,6 +127,16 @@ module Dynamoid
|
|
131
127
|
end
|
132
128
|
end
|
133
129
|
|
130
|
+
def update_item(table_name, key, options = {}, &block)
|
131
|
+
range_key = options.delete(:range_key)
|
132
|
+
conditions = options.delete(:conditions) || {}
|
133
|
+
table = get_table(table_name)
|
134
|
+
item = table.items.at(key, range_key)
|
135
|
+
item.attributes.update(conditions.merge(:return => :all_new), &block)
|
136
|
+
rescue AWS::DynamoDB::Errors::ConditionalCheckFailedException
|
137
|
+
raise Dynamoid::Errors::ConditionalCheckFailedException
|
138
|
+
end
|
139
|
+
|
134
140
|
# List all tables on DynamoDB.
|
135
141
|
#
|
136
142
|
# @since 0.2.0
|
data/lib/dynamoid/components.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
module Dynamoid
|
3
|
-
|
3
|
+
|
4
4
|
# All modules that a Document is composed of are defined in this
|
5
5
|
# module, to keep the document class from getting too cluttered.
|
6
6
|
module Components
|
@@ -10,15 +10,14 @@ module Dynamoid
|
|
10
10
|
extend ActiveModel::Translation
|
11
11
|
extend ActiveModel::Callbacks
|
12
12
|
|
13
|
-
define_model_callbacks :create, :save, :destroy
|
14
|
-
|
13
|
+
define_model_callbacks :create, :save, :destroy, :initialize
|
14
|
+
|
15
15
|
before_create :set_created_at
|
16
16
|
before_save :set_updated_at
|
17
17
|
end
|
18
18
|
|
19
19
|
include ActiveModel::AttributeMethods
|
20
20
|
include ActiveModel::Conversion
|
21
|
-
include ActiveModel::Dirty
|
22
21
|
include ActiveModel::MassAssignmentSecurity
|
23
22
|
include ActiveModel::Naming
|
24
23
|
include ActiveModel::Observing
|
@@ -31,5 +30,7 @@ module Dynamoid
|
|
31
30
|
include Dynamoid::Associations
|
32
31
|
include Dynamoid::Criteria
|
33
32
|
include Dynamoid::Validations
|
33
|
+
include Dynamoid::IdentityMap
|
34
|
+
include Dynamoid::Dirty
|
34
35
|
end
|
35
36
|
end
|
data/lib/dynamoid/config.rb
CHANGED
@@ -3,7 +3,7 @@ require "uri"
|
|
3
3
|
require "dynamoid/config/options"
|
4
4
|
|
5
5
|
module Dynamoid
|
6
|
-
|
6
|
+
|
7
7
|
# Contains all the basic configuration information required for Dynamoid: both sensible defaults and required fields.
|
8
8
|
module Config
|
9
9
|
extend self
|
@@ -11,7 +11,7 @@ module Dynamoid
|
|
11
11
|
include ActiveModel::Observing
|
12
12
|
|
13
13
|
# All the default options.
|
14
|
-
option :adapter, :default => '
|
14
|
+
option :adapter, :default => 'aws-sdk'
|
15
15
|
option :namespace, :default => defined?(Rails) ? "dynamoid_#{Rails.application.class.parent_name}_#{Rails.env}" : "dynamoid"
|
16
16
|
option :logger, :default => defined?(Rails)
|
17
17
|
option :access_key
|
@@ -22,8 +22,11 @@ module Dynamoid
|
|
22
22
|
option :partitioning, :default => false
|
23
23
|
option :partition_size, :default => 200
|
24
24
|
option :endpoint, :default => 'dynamodb.us-east-1.amazonaws.com'
|
25
|
+
option :use_ssl, :default => true
|
26
|
+
option :port, :default => '80'
|
25
27
|
option :included_models, :default => []
|
26
|
-
|
28
|
+
option :identity_map, :default => false
|
29
|
+
|
27
30
|
# The default logger for Dynamoid: either the Rails logger or just stdout.
|
28
31
|
#
|
29
32
|
# @since 0.2.0
|
@@ -37,7 +40,7 @@ module Dynamoid
|
|
37
40
|
def logger
|
38
41
|
@logger ||= default_logger
|
39
42
|
end
|
40
|
-
|
43
|
+
|
41
44
|
# If you want to, set the logger manually to any output you'd like. Or pass false or nil to disable logging entirely.
|
42
45
|
#
|
43
46
|
# @since 0.2.0
|