dynamoid 2.2.0 → 3.0.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +53 -0
- data/.rubocop_todo.yml +55 -0
- data/.travis.yml +5 -27
- data/Appraisals +17 -15
- data/CHANGELOG.md +26 -3
- data/Gemfile +4 -2
- data/README.md +95 -77
- data/Rakefile +17 -17
- data/Vagrantfile +5 -3
- data/dynamoid.gemspec +39 -45
- data/gemfiles/rails_4_2.gemfile +7 -5
- data/gemfiles/rails_5_0.gemfile +6 -4
- data/gemfiles/rails_5_1.gemfile +6 -4
- data/gemfiles/rails_5_2.gemfile +6 -4
- data/lib/dynamoid.rb +11 -4
- data/lib/dynamoid/adapter.rb +21 -27
- data/lib/dynamoid/adapter_plugin/{aws_sdk_v2.rb → aws_sdk_v3.rb} +118 -113
- data/lib/dynamoid/application_time_zone.rb +27 -0
- data/lib/dynamoid/associations.rb +3 -6
- data/lib/dynamoid/associations/association.rb +3 -6
- data/lib/dynamoid/associations/belongs_to.rb +4 -5
- data/lib/dynamoid/associations/has_and_belongs_to_many.rb +2 -3
- data/lib/dynamoid/associations/has_many.rb +2 -3
- data/lib/dynamoid/associations/has_one.rb +2 -3
- data/lib/dynamoid/associations/many_association.rb +8 -9
- data/lib/dynamoid/associations/single_association.rb +3 -3
- data/lib/dynamoid/components.rb +2 -2
- data/lib/dynamoid/config.rb +9 -5
- data/lib/dynamoid/config/backoff_strategies/constant_backoff.rb +4 -2
- data/lib/dynamoid/config/backoff_strategies/exponential_backoff.rb +3 -1
- data/lib/dynamoid/config/options.rb +4 -4
- data/lib/dynamoid/criteria.rb +3 -5
- data/lib/dynamoid/criteria/chain.rb +42 -49
- data/lib/dynamoid/dirty.rb +5 -4
- data/lib/dynamoid/document.rb +142 -36
- data/lib/dynamoid/dumping.rb +167 -0
- data/lib/dynamoid/dynamodb_time_zone.rb +16 -0
- data/lib/dynamoid/errors.rb +7 -6
- data/lib/dynamoid/fields.rb +24 -23
- data/lib/dynamoid/finders.rb +101 -59
- data/lib/dynamoid/identity_map.rb +5 -11
- data/lib/dynamoid/indexes.rb +45 -46
- data/lib/dynamoid/middleware/identity_map.rb +2 -0
- data/lib/dynamoid/persistence.rb +67 -307
- data/lib/dynamoid/primary_key_type_mapping.rb +34 -0
- data/lib/dynamoid/railtie.rb +3 -1
- data/lib/dynamoid/tasks/database.rake +11 -11
- data/lib/dynamoid/tasks/database.rb +4 -3
- data/lib/dynamoid/type_casting.rb +193 -0
- data/lib/dynamoid/undumping.rb +188 -0
- data/lib/dynamoid/validations.rb +4 -7
- data/lib/dynamoid/version.rb +3 -1
- metadata +59 -53
- data/gemfiles/rails_4_0.gemfile +0 -9
- data/gemfiles/rails_4_1.gemfile +0 -9
data/lib/dynamoid/validations.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
2
|
-
module Dynamoid
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
3
|
+
module Dynamoid
|
4
4
|
# Provide ActiveModel validations to Dynamoid documents.
|
5
5
|
module Validations
|
6
6
|
extend ActiveSupport::Concern
|
@@ -13,7 +13,7 @@ module Dynamoid
|
|
13
13
|
# @since 0.2.0
|
14
14
|
def save(options = {})
|
15
15
|
options.reverse_merge!(validate: true)
|
16
|
-
return false if options[:validate]
|
16
|
+
return false if options[:validate] && !valid?
|
17
17
|
super
|
18
18
|
end
|
19
19
|
|
@@ -29,13 +29,12 @@ module Dynamoid
|
|
29
29
|
#
|
30
30
|
# @since 0.2.0
|
31
31
|
def save!
|
32
|
-
raise Dynamoid::Errors::DocumentNotValid
|
32
|
+
raise Dynamoid::Errors::DocumentNotValid, self unless valid?
|
33
33
|
save(validate: false)
|
34
34
|
self
|
35
35
|
end
|
36
36
|
|
37
37
|
module ClassMethods
|
38
|
-
|
39
38
|
# Override validates_presence_of to handle false values as present.
|
40
39
|
#
|
41
40
|
# @since 1.1.1
|
@@ -43,8 +42,6 @@ module Dynamoid
|
|
43
42
|
validates_with PresenceValidator, _merge_attributes(attr_names)
|
44
43
|
end
|
45
44
|
|
46
|
-
private
|
47
|
-
|
48
45
|
# Validates that the specified attributes are present (false or not blank).
|
49
46
|
class PresenceValidator < ActiveModel::EachValidator
|
50
47
|
# Validate the record for the record and value.
|
data/lib/dynamoid/version.rb
CHANGED
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:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Symonds
|
@@ -21,7 +21,7 @@ authors:
|
|
21
21
|
autorequire:
|
22
22
|
bindir: exe
|
23
23
|
cert_chain: []
|
24
|
-
date: 2018-
|
24
|
+
date: 2018-09-23 00:00:00.000000000 Z
|
25
25
|
dependencies:
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: activemodel
|
@@ -38,49 +38,49 @@ dependencies:
|
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '4'
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
|
-
name:
|
41
|
+
name: aws-sdk-dynamodb
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
47
|
-
type: :
|
46
|
+
version: '1'
|
47
|
+
type: :runtime
|
48
48
|
prerelease: false
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '1'
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
|
-
name:
|
55
|
+
name: concurrent-ruby
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - "
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '1.0'
|
61
61
|
type: :runtime
|
62
62
|
prerelease: false
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - "
|
65
|
+
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '1.0'
|
68
68
|
- !ruby/object:Gem::Dependency
|
69
|
-
name:
|
69
|
+
name: appraisal
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
75
|
-
type: :
|
74
|
+
version: '0'
|
75
|
+
type: :development
|
76
76
|
prerelease: false
|
77
77
|
version_requirements: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '0'
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
|
-
name:
|
83
|
+
name: bundler
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - ">="
|
@@ -94,77 +94,77 @@ dependencies:
|
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
96
|
- !ruby/object:Gem::Dependency
|
97
|
-
name:
|
97
|
+
name: coveralls
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- - "
|
100
|
+
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
102
|
+
version: '0'
|
103
103
|
type: :development
|
104
104
|
prerelease: false
|
105
105
|
version_requirements: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- - "
|
107
|
+
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
109
|
+
version: '0'
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
111
|
+
name: pry
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
|
-
- - "
|
114
|
+
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
116
|
+
version: '0'
|
117
117
|
type: :development
|
118
118
|
prerelease: false
|
119
119
|
version_requirements: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- - "
|
121
|
+
- - ">="
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: '
|
123
|
+
version: '0'
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
|
-
name:
|
125
|
+
name: rake
|
126
126
|
requirement: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
|
-
- - "
|
128
|
+
- - ">="
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
130
|
+
version: '0'
|
131
131
|
type: :development
|
132
132
|
prerelease: false
|
133
133
|
version_requirements: !ruby/object:Gem::Requirement
|
134
134
|
requirements:
|
135
|
-
- - "
|
135
|
+
- - ">="
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
137
|
+
version: '0'
|
138
138
|
- !ruby/object:Gem::Dependency
|
139
|
-
name:
|
139
|
+
name: rspec
|
140
140
|
requirement: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- - "
|
142
|
+
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
144
|
+
version: '0'
|
145
145
|
type: :development
|
146
146
|
prerelease: false
|
147
147
|
version_requirements: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
|
-
- - "
|
149
|
+
- - ">="
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
151
|
+
version: '0'
|
152
152
|
- !ruby/object:Gem::Dependency
|
153
|
-
name:
|
153
|
+
name: rubocop
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
|
-
- - "
|
156
|
+
- - ">="
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: '
|
158
|
+
version: '0'
|
159
159
|
type: :development
|
160
160
|
prerelease: false
|
161
161
|
version_requirements: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
|
-
- - "
|
163
|
+
- - ">="
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: '
|
165
|
+
version: '0'
|
166
166
|
- !ruby/object:Gem::Dependency
|
167
|
-
name:
|
167
|
+
name: wwtd
|
168
168
|
requirement: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - ">="
|
@@ -178,19 +178,19 @@ dependencies:
|
|
178
178
|
- !ruby/object:Gem::Version
|
179
179
|
version: '0'
|
180
180
|
- !ruby/object:Gem::Dependency
|
181
|
-
name:
|
181
|
+
name: yard
|
182
182
|
requirement: !ruby/object:Gem::Requirement
|
183
183
|
requirements:
|
184
|
-
- - "
|
184
|
+
- - ">="
|
185
185
|
- !ruby/object:Gem::Version
|
186
|
-
version: '0
|
186
|
+
version: '0'
|
187
187
|
type: :development
|
188
188
|
prerelease: false
|
189
189
|
version_requirements: !ruby/object:Gem::Requirement
|
190
190
|
requirements:
|
191
|
-
- - "
|
191
|
+
- - ">="
|
192
192
|
- !ruby/object:Gem::Version
|
193
|
-
version: '0
|
193
|
+
version: '0'
|
194
194
|
description: Dynamoid is an ORM for Amazon's DynamoDB that supports offline development,
|
195
195
|
associations, querying, and everything else you'd expect from an ActiveRecord-style
|
196
196
|
replacement.
|
@@ -207,6 +207,8 @@ files:
|
|
207
207
|
- ".document"
|
208
208
|
- ".gitignore"
|
209
209
|
- ".rspec"
|
210
|
+
- ".rubocop.yml"
|
211
|
+
- ".rubocop_todo.yml"
|
210
212
|
- ".travis.yml"
|
211
213
|
- Appraisals
|
212
214
|
- CHANGELOG.md
|
@@ -217,15 +219,14 @@ files:
|
|
217
219
|
- Vagrantfile
|
218
220
|
- docker-compose.yml
|
219
221
|
- dynamoid.gemspec
|
220
|
-
- gemfiles/rails_4_0.gemfile
|
221
|
-
- gemfiles/rails_4_1.gemfile
|
222
222
|
- gemfiles/rails_4_2.gemfile
|
223
223
|
- gemfiles/rails_5_0.gemfile
|
224
224
|
- gemfiles/rails_5_1.gemfile
|
225
225
|
- gemfiles/rails_5_2.gemfile
|
226
226
|
- lib/dynamoid.rb
|
227
227
|
- lib/dynamoid/adapter.rb
|
228
|
-
- lib/dynamoid/adapter_plugin/
|
228
|
+
- lib/dynamoid/adapter_plugin/aws_sdk_v3.rb
|
229
|
+
- lib/dynamoid/application_time_zone.rb
|
229
230
|
- lib/dynamoid/associations.rb
|
230
231
|
- lib/dynamoid/associations/association.rb
|
231
232
|
- lib/dynamoid/associations/belongs_to.rb
|
@@ -243,6 +244,8 @@ files:
|
|
243
244
|
- lib/dynamoid/criteria/chain.rb
|
244
245
|
- lib/dynamoid/dirty.rb
|
245
246
|
- lib/dynamoid/document.rb
|
247
|
+
- lib/dynamoid/dumping.rb
|
248
|
+
- lib/dynamoid/dynamodb_time_zone.rb
|
246
249
|
- lib/dynamoid/errors.rb
|
247
250
|
- lib/dynamoid/fields.rb
|
248
251
|
- lib/dynamoid/finders.rb
|
@@ -250,9 +253,12 @@ files:
|
|
250
253
|
- lib/dynamoid/indexes.rb
|
251
254
|
- lib/dynamoid/middleware/identity_map.rb
|
252
255
|
- lib/dynamoid/persistence.rb
|
256
|
+
- lib/dynamoid/primary_key_type_mapping.rb
|
253
257
|
- lib/dynamoid/railtie.rb
|
254
258
|
- lib/dynamoid/tasks/database.rake
|
255
259
|
- lib/dynamoid/tasks/database.rb
|
260
|
+
- lib/dynamoid/type_casting.rb
|
261
|
+
- lib/dynamoid/undumping.rb
|
256
262
|
- lib/dynamoid/validations.rb
|
257
263
|
- lib/dynamoid/version.rb
|
258
264
|
homepage: http://github.com/Dynamoid/Dynamoid
|
@@ -275,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
275
281
|
version: '0'
|
276
282
|
requirements: []
|
277
283
|
rubyforge_project:
|
278
|
-
rubygems_version: 2.
|
284
|
+
rubygems_version: 2.6.14
|
279
285
|
signing_key:
|
280
286
|
specification_version: 4
|
281
287
|
summary: Dynamoid is an ORM for Amazon's DynamoDB
|
data/gemfiles/rails_4_0.gemfile
DELETED