dynamoid 0.7.1 → 1.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 +7 -0
- data/Gemfile +2 -24
- data/README.markdown +89 -73
- data/Rakefile +10 -36
- data/dynamoid.gemspec +56 -191
- data/lib/dynamoid.rb +6 -4
- data/lib/dynamoid/adapter.rb +64 -150
- data/lib/dynamoid/adapter_plugin/aws_sdk_v2.rb +579 -0
- data/lib/dynamoid/components.rb +0 -1
- data/lib/dynamoid/config.rb +2 -5
- data/lib/dynamoid/criteria.rb +1 -1
- data/lib/dynamoid/criteria/chain.rb +27 -140
- data/lib/dynamoid/document.rb +2 -2
- data/lib/dynamoid/errors.rb +30 -9
- data/lib/dynamoid/fields.rb +15 -3
- data/lib/dynamoid/finders.rb +7 -6
- data/lib/dynamoid/identity_map.rb +1 -5
- data/lib/dynamoid/persistence.rb +108 -93
- metadata +56 -229
- data/.document +0 -5
- data/.rspec +0 -1
- data/.travis.yml +0 -7
- data/Gemfile.lock +0 -81
- data/Gemfile_activemodel4 +0 -24
- data/Gemfile_activemodel4.lock +0 -88
- data/VERSION +0 -1
- data/doc/.nojekyll +0 -0
- data/doc/Dynamoid.html +0 -328
- data/doc/Dynamoid/Adapter.html +0 -1872
- data/doc/Dynamoid/Adapter/AwsSdk.html +0 -2101
- data/doc/Dynamoid/Adapter/Local.html +0 -1574
- data/doc/Dynamoid/Associations.html +0 -138
- data/doc/Dynamoid/Associations/Association.html +0 -847
- data/doc/Dynamoid/Associations/BelongsTo.html +0 -161
- data/doc/Dynamoid/Associations/ClassMethods.html +0 -766
- data/doc/Dynamoid/Associations/HasAndBelongsToMany.html +0 -167
- data/doc/Dynamoid/Associations/HasMany.html +0 -167
- data/doc/Dynamoid/Associations/HasOne.html +0 -161
- data/doc/Dynamoid/Associations/ManyAssociation.html +0 -1684
- data/doc/Dynamoid/Associations/SingleAssociation.html +0 -627
- data/doc/Dynamoid/Components.html +0 -242
- data/doc/Dynamoid/Config.html +0 -412
- data/doc/Dynamoid/Config/Options.html +0 -638
- data/doc/Dynamoid/Criteria.html +0 -138
- data/doc/Dynamoid/Criteria/Chain.html +0 -1471
- data/doc/Dynamoid/Criteria/ClassMethods.html +0 -105
- data/doc/Dynamoid/Dirty.html +0 -424
- data/doc/Dynamoid/Dirty/ClassMethods.html +0 -174
- data/doc/Dynamoid/Document.html +0 -1033
- data/doc/Dynamoid/Document/ClassMethods.html +0 -1116
- data/doc/Dynamoid/Errors.html +0 -125
- data/doc/Dynamoid/Errors/ConditionalCheckFailedException.html +0 -141
- data/doc/Dynamoid/Errors/DocumentNotValid.html +0 -221
- data/doc/Dynamoid/Errors/Error.html +0 -137
- data/doc/Dynamoid/Errors/InvalidField.html +0 -141
- data/doc/Dynamoid/Errors/InvalidQuery.html +0 -131
- data/doc/Dynamoid/Errors/MissingRangeKey.html +0 -141
- data/doc/Dynamoid/Fields.html +0 -686
- data/doc/Dynamoid/Fields/ClassMethods.html +0 -438
- data/doc/Dynamoid/Finders.html +0 -135
- data/doc/Dynamoid/Finders/ClassMethods.html +0 -943
- data/doc/Dynamoid/IdentityMap.html +0 -492
- data/doc/Dynamoid/IdentityMap/ClassMethods.html +0 -534
- data/doc/Dynamoid/Indexes.html +0 -321
- data/doc/Dynamoid/Indexes/ClassMethods.html +0 -369
- data/doc/Dynamoid/Indexes/Index.html +0 -1142
- data/doc/Dynamoid/Middleware.html +0 -115
- data/doc/Dynamoid/Middleware/IdentityMap.html +0 -264
- data/doc/Dynamoid/Persistence.html +0 -892
- data/doc/Dynamoid/Persistence/ClassMethods.html +0 -836
- data/doc/Dynamoid/Validations.html +0 -415
- data/doc/_index.html +0 -506
- data/doc/class_list.html +0 -53
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -57
- data/doc/css/style.css +0 -338
- data/doc/file.LICENSE.html +0 -73
- data/doc/file.README.html +0 -416
- data/doc/file_list.html +0 -58
- data/doc/frames.html +0 -28
- data/doc/index.html +0 -416
- data/doc/js/app.js +0 -214
- data/doc/js/full_list.js +0 -178
- data/doc/js/jquery.js +0 -4
- data/doc/method_list.html +0 -1144
- data/doc/top-level-namespace.html +0 -112
- data/lib/dynamoid/adapter/aws_sdk.rb +0 -287
- data/lib/dynamoid/indexes.rb +0 -69
- data/lib/dynamoid/indexes/index.rb +0 -103
- data/spec/app/models/address.rb +0 -13
- data/spec/app/models/camel_case.rb +0 -34
- data/spec/app/models/car.rb +0 -6
- data/spec/app/models/magazine.rb +0 -11
- data/spec/app/models/message.rb +0 -9
- data/spec/app/models/nuclear_submarine.rb +0 -5
- data/spec/app/models/sponsor.rb +0 -8
- data/spec/app/models/subscription.rb +0 -12
- data/spec/app/models/tweet.rb +0 -12
- data/spec/app/models/user.rb +0 -26
- data/spec/app/models/vehicle.rb +0 -7
- data/spec/dynamoid/adapter/aws_sdk_spec.rb +0 -376
- data/spec/dynamoid/adapter_spec.rb +0 -155
- data/spec/dynamoid/associations/association_spec.rb +0 -194
- data/spec/dynamoid/associations/belongs_to_spec.rb +0 -71
- data/spec/dynamoid/associations/has_and_belongs_to_many_spec.rb +0 -47
- data/spec/dynamoid/associations/has_many_spec.rb +0 -42
- data/spec/dynamoid/associations/has_one_spec.rb +0 -45
- data/spec/dynamoid/associations_spec.rb +0 -16
- data/spec/dynamoid/config_spec.rb +0 -27
- data/spec/dynamoid/criteria/chain_spec.rb +0 -210
- data/spec/dynamoid/criteria_spec.rb +0 -75
- data/spec/dynamoid/dirty_spec.rb +0 -57
- data/spec/dynamoid/document_spec.rb +0 -180
- data/spec/dynamoid/fields_spec.rb +0 -156
- data/spec/dynamoid/finders_spec.rb +0 -147
- data/spec/dynamoid/identity_map_spec.rb +0 -45
- data/spec/dynamoid/indexes/index_spec.rb +0 -104
- data/spec/dynamoid/indexes_spec.rb +0 -25
- data/spec/dynamoid/persistence_spec.rb +0 -301
- data/spec/dynamoid/validations_spec.rb +0 -36
- data/spec/dynamoid_spec.rb +0 -9
- data/spec/spec_helper.rb +0 -55
- data/spec/support/with_partitioning.rb +0 -15
|
@@ -3,11 +3,7 @@ module Dynamoid
|
|
|
3
3
|
extend ActiveSupport::Concern
|
|
4
4
|
|
|
5
5
|
def self.clear
|
|
6
|
-
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def self.models
|
|
10
|
-
Dynamoid::Config.included_models
|
|
6
|
+
Dynamoid.included_models.each { |m| m.identity_map.clear }
|
|
11
7
|
end
|
|
12
8
|
|
|
13
9
|
module ClassMethods
|
data/lib/dynamoid/persistence.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
require 'bigdecimal'
|
|
1
2
|
require 'securerandom'
|
|
3
|
+
require 'yaml'
|
|
2
4
|
|
|
3
5
|
# encoding: utf-8
|
|
4
6
|
module Dynamoid
|
|
@@ -41,16 +43,7 @@ module Dynamoid
|
|
|
41
43
|
:range_key => range_key_hash
|
|
42
44
|
}.merge(options)
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
Dynamoid::Adapter.tables << options[:table_name] if Dynamoid::Adapter.create_table(options[:table_name], options[:id], options)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Does a table with this name exist?
|
|
50
|
-
#
|
|
51
|
-
# @since 0.2.0
|
|
52
|
-
def table_exists?(table_name)
|
|
53
|
-
Dynamoid::Adapter.tables ? Dynamoid::Adapter.tables.include?(table_name) : false
|
|
46
|
+
Dynamoid.adapter.create_table(options[:table_name], options[:id], options)
|
|
54
47
|
end
|
|
55
48
|
|
|
56
49
|
def from_database(attrs = {})
|
|
@@ -71,64 +64,73 @@ module Dynamoid
|
|
|
71
64
|
end
|
|
72
65
|
end
|
|
73
66
|
|
|
74
|
-
# Undump a value for a given type.
|
|
75
|
-
# string, integer, float, set, array, datetime, or serialized return value.
|
|
67
|
+
# Undump a string value for a given type.
|
|
76
68
|
#
|
|
77
69
|
# @since 0.2.0
|
|
78
70
|
def undump_field(value, options)
|
|
79
|
-
if
|
|
80
|
-
|
|
81
|
-
else
|
|
82
|
-
return if value.nil? || (value.respond_to?(:empty?) && value.empty?)
|
|
83
|
-
end
|
|
71
|
+
if (field_class = options[:type]).is_a?(Class)
|
|
72
|
+
raise 'Dynamoid class-type fields do not support default values' if options[:default]
|
|
84
73
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
value.to_s
|
|
88
|
-
when :integer
|
|
89
|
-
value.to_i
|
|
90
|
-
when :float
|
|
91
|
-
value.to_f
|
|
92
|
-
when :set, :array
|
|
93
|
-
if value.is_a?(Set) || value.is_a?(Array)
|
|
94
|
-
value
|
|
95
|
-
else
|
|
96
|
-
Set[value]
|
|
97
|
-
end
|
|
98
|
-
when :datetime
|
|
99
|
-
if value.is_a?(Date) || value.is_a?(DateTime) || value.is_a?(Time)
|
|
100
|
-
value
|
|
101
|
-
else
|
|
102
|
-
Time.at(value).to_datetime
|
|
74
|
+
if field_class.respond_to?(:dynamoid_load)
|
|
75
|
+
field_class.dynamoid_load(value)
|
|
103
76
|
end
|
|
104
|
-
|
|
77
|
+
elsif options[:type] == :serialized
|
|
105
78
|
if value.is_a?(String)
|
|
106
79
|
options[:serializer] ? options[:serializer].load(value) : YAML.load(value)
|
|
107
80
|
else
|
|
108
81
|
value
|
|
109
82
|
end
|
|
110
|
-
when :boolean
|
|
111
|
-
# persisted as 't', but because undump is called during initialize it can come in as true
|
|
112
|
-
if value == 't' || value == true
|
|
113
|
-
true
|
|
114
|
-
elsif value == 'f' || value == false
|
|
115
|
-
false
|
|
116
|
-
else
|
|
117
|
-
raise ArgumentError, "Boolean column neither true nor false"
|
|
118
|
-
end
|
|
119
83
|
else
|
|
120
|
-
|
|
84
|
+
if value.nil? && (default_value = options[:default])
|
|
85
|
+
value = default_value.respond_to?(:call) ? default_value.call : default_value
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
if !value.nil?
|
|
89
|
+
case options[:type]
|
|
90
|
+
when :string
|
|
91
|
+
value.to_s
|
|
92
|
+
when :integer
|
|
93
|
+
Integer(value)
|
|
94
|
+
when :number
|
|
95
|
+
BigDecimal.new(value.to_s)
|
|
96
|
+
when :array
|
|
97
|
+
value.to_a
|
|
98
|
+
when :set
|
|
99
|
+
Set.new(value)
|
|
100
|
+
when :datetime
|
|
101
|
+
if value.is_a?(Date) || value.is_a?(DateTime) || value.is_a?(Time)
|
|
102
|
+
value
|
|
103
|
+
else
|
|
104
|
+
Time.at(value).to_datetime
|
|
105
|
+
end
|
|
106
|
+
when :boolean
|
|
107
|
+
# persisted as 't', but because undump is called during initialize it can come in as true
|
|
108
|
+
if value == 't' || value == true
|
|
109
|
+
true
|
|
110
|
+
elsif value == 'f' || value == false
|
|
111
|
+
false
|
|
112
|
+
else
|
|
113
|
+
raise ArgumentError, "Boolean column neither true nor false"
|
|
114
|
+
end
|
|
115
|
+
else
|
|
116
|
+
raise ArgumentError, "Unknown type #{options[:type]}"
|
|
117
|
+
end
|
|
118
|
+
end
|
|
121
119
|
end
|
|
122
120
|
end
|
|
123
121
|
|
|
124
122
|
def dynamo_type(type)
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
:number
|
|
128
|
-
when :string, :serialized
|
|
129
|
-
:string
|
|
123
|
+
if type.is_a?(Class)
|
|
124
|
+
type.respond_to?(:dynamoid_field_type) ? type.dynamoid_field_type : :string
|
|
130
125
|
else
|
|
131
|
-
|
|
126
|
+
case type
|
|
127
|
+
when :integer, :number, :datetime
|
|
128
|
+
:number
|
|
129
|
+
when :string, :serialized
|
|
130
|
+
:string
|
|
131
|
+
else
|
|
132
|
+
raise 'unknown type'
|
|
133
|
+
end
|
|
132
134
|
end
|
|
133
135
|
end
|
|
134
136
|
|
|
@@ -155,7 +157,7 @@ module Dynamoid
|
|
|
155
157
|
# @since 0.2.0
|
|
156
158
|
def save(options = {})
|
|
157
159
|
self.class.create_table
|
|
158
|
-
|
|
160
|
+
|
|
159
161
|
if new_record?
|
|
160
162
|
conditions = { :unless_exists => [self.class.hash_key]}
|
|
161
163
|
conditions[:unless_exists] << range_key if(range_key)
|
|
@@ -176,22 +178,26 @@ module Dynamoid
|
|
|
176
178
|
def update!(conditions = {}, &block)
|
|
177
179
|
run_callbacks(:update) do
|
|
178
180
|
options = range_key ? {:range_key => dump_field(self.read_attribute(range_key), self.class.attributes[range_key])} : {}
|
|
179
|
-
new_attrs = Dynamoid::Adapter.update_item(self.class.table_name, self.hash_key, options.merge(:conditions => conditions)) do |t|
|
|
180
|
-
if(self.class.attributes[:lock_version])
|
|
181
|
-
raise "Optimistic locking cannot be used with Partitioning" if(Dynamoid::Config.partitioning)
|
|
182
|
-
t.add(lock_version: 1)
|
|
183
|
-
end
|
|
184
181
|
|
|
185
|
-
|
|
182
|
+
begin
|
|
183
|
+
new_attrs = Dynamoid.adapter.update_item(self.class.table_name, self.hash_key, options.merge(:conditions => conditions)) do |t|
|
|
184
|
+
if(self.class.attributes[:lock_version])
|
|
185
|
+
t.add(lock_version: 1)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
yield t
|
|
189
|
+
end
|
|
190
|
+
load(new_attrs)
|
|
191
|
+
rescue Dynamoid::Errors::ConditionalCheckFailedException
|
|
192
|
+
raise Dynamoid::Errors::StaleObjectError.new(self, 'update')
|
|
186
193
|
end
|
|
187
|
-
load(new_attrs)
|
|
188
194
|
end
|
|
189
195
|
end
|
|
190
196
|
|
|
191
197
|
def update(conditions = {}, &block)
|
|
192
198
|
update!(conditions, &block)
|
|
193
199
|
true
|
|
194
|
-
rescue Dynamoid::Errors::
|
|
200
|
+
rescue Dynamoid::Errors::StaleObjectError
|
|
195
201
|
false
|
|
196
202
|
end
|
|
197
203
|
|
|
@@ -205,13 +211,12 @@ module Dynamoid
|
|
|
205
211
|
self
|
|
206
212
|
end
|
|
207
213
|
|
|
208
|
-
# Delete this object from the datastore
|
|
214
|
+
# Delete this object from the datastore.
|
|
209
215
|
#
|
|
210
216
|
# @since 0.2.0
|
|
211
217
|
def delete
|
|
212
|
-
delete_indexes
|
|
213
218
|
options = range_key ? {:range_key => dump_field(self.read_attribute(range_key), self.class.attributes[range_key])} : {}
|
|
214
|
-
Dynamoid
|
|
219
|
+
Dynamoid.adapter.delete(self.class.table_name, self.hash_key, options)
|
|
215
220
|
end
|
|
216
221
|
|
|
217
222
|
# Dump this object's attributes into hash form, fit to be persisted into the datastore.
|
|
@@ -232,34 +237,39 @@ module Dynamoid
|
|
|
232
237
|
#
|
|
233
238
|
# @since 0.2.0
|
|
234
239
|
def dump_field(value, options)
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
when :integer
|
|
241
|
-
value.to_i
|
|
242
|
-
when :float
|
|
243
|
-
value.to_f
|
|
244
|
-
when :set, :array
|
|
245
|
-
if value.is_a?(Set) || value.is_a?(Array)
|
|
246
|
-
value
|
|
240
|
+
if (field_class = options[:type]).is_a?(Class)
|
|
241
|
+
if value.respond_to?(:dynamoid_dump)
|
|
242
|
+
value.dynamoid_dump
|
|
243
|
+
elsif field_class.respond_to?(:dynamoid_dump)
|
|
244
|
+
field_class.dynamoid_dump(value)
|
|
247
245
|
else
|
|
248
|
-
|
|
246
|
+
raise ArgumentError, "Neither #{field_class} nor #{value} support serialization for Dynamoid."
|
|
249
247
|
end
|
|
250
|
-
when :datetime
|
|
251
|
-
value.to_time.to_f
|
|
252
|
-
when :serialized
|
|
253
|
-
options[:serializer] ? options[:serializer].dump(value) : value.to_yaml
|
|
254
|
-
when :boolean
|
|
255
|
-
value.to_s[0]
|
|
256
248
|
else
|
|
257
|
-
|
|
249
|
+
case options[:type]
|
|
250
|
+
when :string
|
|
251
|
+
!value.nil? ? value.to_s : nil
|
|
252
|
+
when :integer
|
|
253
|
+
!value.nil? ? Integer(value) : nil
|
|
254
|
+
when :number
|
|
255
|
+
!value.nil? ? value : nil
|
|
256
|
+
when :set
|
|
257
|
+
!value.nil? ? Set.new(value) : nil
|
|
258
|
+
when :array
|
|
259
|
+
!value.nil? ? value : nil
|
|
260
|
+
when :datetime
|
|
261
|
+
!value.nil? ? value.to_time.to_f : nil
|
|
262
|
+
when :serialized
|
|
263
|
+
options[:serializer] ? options[:serializer].dump(value) : value.to_yaml
|
|
264
|
+
when :boolean
|
|
265
|
+
!value.nil? ? value.to_s[0] : nil
|
|
266
|
+
else
|
|
267
|
+
raise ArgumentError, "Unknown type #{options[:type]}"
|
|
268
|
+
end
|
|
258
269
|
end
|
|
259
270
|
end
|
|
260
271
|
|
|
261
|
-
# Persist the object into the datastore. Assign it an id first if it doesn't have one
|
|
262
|
-
# save its indexes.
|
|
272
|
+
# Persist the object into the datastore. Assign it an id first if it doesn't have one.
|
|
263
273
|
#
|
|
264
274
|
# @since 0.2.0
|
|
265
275
|
def persist(conditions = nil)
|
|
@@ -275,18 +285,23 @@ module Dynamoid
|
|
|
275
285
|
# Add an optimistic locking check if the lock_version column exists
|
|
276
286
|
if(self.class.attributes[:lock_version])
|
|
277
287
|
conditions ||= {}
|
|
278
|
-
|
|
279
|
-
self.lock_version = (lock_version || 0) + 1
|
|
288
|
+
self.lock_version = (lock_version || 0) + 1
|
|
280
289
|
#Uses the original lock_version value from ActiveModel::Dirty in case user changed lock_version manually
|
|
281
290
|
(conditions[:if] ||= {})[:lock_version] = changes[:lock_version][0] if(changes[:lock_version][0])
|
|
282
291
|
end
|
|
283
292
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
293
|
+
begin
|
|
294
|
+
Dynamoid.adapter.write(self.class.table_name, self.dump, conditions)
|
|
295
|
+
@new_record = false
|
|
296
|
+
true
|
|
297
|
+
rescue Dynamoid::Errors::ConditionalCheckFailedException => e
|
|
298
|
+
if new_record?
|
|
299
|
+
raise Dynamoid::Errors::RecordNotUnique.new(e, self)
|
|
300
|
+
else
|
|
301
|
+
raise Dynamoid::Errors::StaleObjectError.new(self, 'persist')
|
|
302
|
+
end
|
|
303
|
+
end
|
|
288
304
|
end
|
|
289
305
|
end
|
|
290
306
|
end
|
|
291
|
-
|
|
292
307
|
end
|
metadata
CHANGED
|
@@ -1,309 +1,176 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dynamoid
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 1.0.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
|
-
- Josh
|
|
7
|
+
- Josh
|
|
8
|
+
- Symonds
|
|
9
|
+
- Logan
|
|
10
|
+
- Bowers
|
|
11
|
+
- Craig
|
|
12
|
+
- Heneveld
|
|
13
|
+
- Anatha
|
|
14
|
+
- Kumaran
|
|
15
|
+
- Jason
|
|
16
|
+
- Dew
|
|
17
|
+
- Luis
|
|
18
|
+
- Arias
|
|
19
|
+
- Stefan
|
|
20
|
+
- Neculai
|
|
21
|
+
- Philip
|
|
22
|
+
- White
|
|
23
|
+
- Peeyush
|
|
24
|
+
- Kumar
|
|
9
25
|
autorequire:
|
|
10
26
|
bindir: bin
|
|
11
27
|
cert_chain: []
|
|
12
|
-
date:
|
|
28
|
+
date: 2015-11-25 00:00:00.000000000 Z
|
|
13
29
|
dependencies:
|
|
14
30
|
- !ruby/object:Gem::Dependency
|
|
15
31
|
name: activemodel
|
|
16
32
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
33
|
requirements:
|
|
19
|
-
- -
|
|
34
|
+
- - "~>"
|
|
20
35
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: '
|
|
36
|
+
version: '4'
|
|
22
37
|
type: :runtime
|
|
23
38
|
prerelease: false
|
|
24
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
40
|
requirements:
|
|
27
|
-
- -
|
|
41
|
+
- - "~>"
|
|
28
42
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '
|
|
43
|
+
version: '4'
|
|
30
44
|
- !ruby/object:Gem::Dependency
|
|
31
|
-
name:
|
|
45
|
+
name: aws-sdk-resources
|
|
32
46
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
47
|
requirements:
|
|
35
|
-
- -
|
|
48
|
+
- - "~>"
|
|
36
49
|
- !ruby/object:Gem::Version
|
|
37
|
-
version: '
|
|
50
|
+
version: '2'
|
|
38
51
|
type: :runtime
|
|
39
52
|
prerelease: false
|
|
40
53
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
54
|
requirements:
|
|
43
|
-
- -
|
|
55
|
+
- - "~>"
|
|
44
56
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: '
|
|
57
|
+
version: '2'
|
|
46
58
|
- !ruby/object:Gem::Dependency
|
|
47
|
-
name:
|
|
59
|
+
name: concurrent-ruby
|
|
48
60
|
requirement: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
61
|
requirements:
|
|
51
|
-
- -
|
|
62
|
+
- - "~>"
|
|
52
63
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0'
|
|
64
|
+
version: '0.9'
|
|
54
65
|
type: :runtime
|
|
55
66
|
prerelease: false
|
|
56
67
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
none: false
|
|
58
68
|
requirements:
|
|
59
|
-
- -
|
|
69
|
+
- - "~>"
|
|
60
70
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
71
|
+
version: '0.9'
|
|
62
72
|
- !ruby/object:Gem::Dependency
|
|
63
73
|
name: rake
|
|
64
74
|
requirement: !ruby/object:Gem::Requirement
|
|
65
|
-
none: false
|
|
66
75
|
requirements:
|
|
67
|
-
- -
|
|
76
|
+
- - ">="
|
|
68
77
|
- !ruby/object:Gem::Version
|
|
69
78
|
version: '0'
|
|
70
79
|
type: :development
|
|
71
80
|
prerelease: false
|
|
72
81
|
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
-
none: false
|
|
74
82
|
requirements:
|
|
75
|
-
- -
|
|
83
|
+
- - ">="
|
|
76
84
|
- !ruby/object:Gem::Version
|
|
77
85
|
version: '0'
|
|
78
86
|
- !ruby/object:Gem::Dependency
|
|
79
87
|
name: rspec
|
|
80
88
|
requirement: !ruby/object:Gem::Requirement
|
|
81
|
-
none: false
|
|
82
89
|
requirements:
|
|
83
|
-
- -
|
|
90
|
+
- - "~>"
|
|
84
91
|
- !ruby/object:Gem::Version
|
|
85
|
-
version: '
|
|
92
|
+
version: '3'
|
|
86
93
|
type: :development
|
|
87
94
|
prerelease: false
|
|
88
95
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
-
none: false
|
|
90
96
|
requirements:
|
|
91
|
-
- -
|
|
97
|
+
- - "~>"
|
|
92
98
|
- !ruby/object:Gem::Version
|
|
93
|
-
version: '
|
|
99
|
+
version: '3'
|
|
94
100
|
- !ruby/object:Gem::Dependency
|
|
95
101
|
name: bundler
|
|
96
102
|
requirement: !ruby/object:Gem::Requirement
|
|
97
|
-
none: false
|
|
98
103
|
requirements:
|
|
99
|
-
- -
|
|
104
|
+
- - ">="
|
|
100
105
|
- !ruby/object:Gem::Version
|
|
101
106
|
version: '0'
|
|
102
107
|
type: :development
|
|
103
108
|
prerelease: false
|
|
104
109
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
-
none: false
|
|
106
110
|
requirements:
|
|
107
|
-
- -
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0'
|
|
110
|
-
- !ruby/object:Gem::Dependency
|
|
111
|
-
name: jeweler
|
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
|
113
|
-
none: false
|
|
114
|
-
requirements:
|
|
115
|
-
- - ! '>='
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0'
|
|
118
|
-
type: :development
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
none: false
|
|
122
|
-
requirements:
|
|
123
|
-
- - ! '>='
|
|
111
|
+
- - ">="
|
|
124
112
|
- !ruby/object:Gem::Version
|
|
125
113
|
version: '0'
|
|
126
114
|
- !ruby/object:Gem::Dependency
|
|
127
115
|
name: yard
|
|
128
116
|
requirement: !ruby/object:Gem::Requirement
|
|
129
|
-
none: false
|
|
130
117
|
requirements:
|
|
131
|
-
- -
|
|
118
|
+
- - ">="
|
|
132
119
|
- !ruby/object:Gem::Version
|
|
133
120
|
version: '0'
|
|
134
121
|
type: :development
|
|
135
122
|
prerelease: false
|
|
136
123
|
version_requirements: !ruby/object:Gem::Requirement
|
|
137
|
-
none: false
|
|
138
124
|
requirements:
|
|
139
|
-
- -
|
|
125
|
+
- - ">="
|
|
140
126
|
- !ruby/object:Gem::Version
|
|
141
127
|
version: '0'
|
|
142
|
-
- !ruby/object:Gem::Dependency
|
|
143
|
-
name: redcarpet
|
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
|
145
|
-
none: false
|
|
146
|
-
requirements:
|
|
147
|
-
- - '='
|
|
148
|
-
- !ruby/object:Gem::Version
|
|
149
|
-
version: 1.17.2
|
|
150
|
-
type: :development
|
|
151
|
-
prerelease: false
|
|
152
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
153
|
-
none: false
|
|
154
|
-
requirements:
|
|
155
|
-
- - '='
|
|
156
|
-
- !ruby/object:Gem::Version
|
|
157
|
-
version: 1.17.2
|
|
158
128
|
- !ruby/object:Gem::Dependency
|
|
159
129
|
name: github-markup
|
|
160
130
|
requirement: !ruby/object:Gem::Requirement
|
|
161
|
-
none: false
|
|
162
131
|
requirements:
|
|
163
|
-
- -
|
|
132
|
+
- - ">="
|
|
164
133
|
- !ruby/object:Gem::Version
|
|
165
134
|
version: '0'
|
|
166
135
|
type: :development
|
|
167
136
|
prerelease: false
|
|
168
137
|
version_requirements: !ruby/object:Gem::Requirement
|
|
169
|
-
none: false
|
|
170
138
|
requirements:
|
|
171
|
-
- -
|
|
139
|
+
- - ">="
|
|
172
140
|
- !ruby/object:Gem::Version
|
|
173
141
|
version: '0'
|
|
174
142
|
- !ruby/object:Gem::Dependency
|
|
175
143
|
name: pry
|
|
176
144
|
requirement: !ruby/object:Gem::Requirement
|
|
177
|
-
none: false
|
|
178
145
|
requirements:
|
|
179
|
-
- -
|
|
146
|
+
- - ">="
|
|
180
147
|
- !ruby/object:Gem::Version
|
|
181
148
|
version: '0'
|
|
182
149
|
type: :development
|
|
183
150
|
prerelease: false
|
|
184
151
|
version_requirements: !ruby/object:Gem::Requirement
|
|
185
|
-
none: false
|
|
186
152
|
requirements:
|
|
187
|
-
- -
|
|
153
|
+
- - ">="
|
|
188
154
|
- !ruby/object:Gem::Version
|
|
189
155
|
version: '0'
|
|
190
|
-
- !ruby/object:Gem::Dependency
|
|
191
|
-
name: fake_dynamo
|
|
192
|
-
requirement: !ruby/object:Gem::Requirement
|
|
193
|
-
none: false
|
|
194
|
-
requirements:
|
|
195
|
-
- - ~>
|
|
196
|
-
- !ruby/object:Gem::Version
|
|
197
|
-
version: 0.1.3
|
|
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.1.3
|
|
206
|
-
- !ruby/object:Gem::Dependency
|
|
207
|
-
name: mocha
|
|
208
|
-
requirement: !ruby/object:Gem::Requirement
|
|
209
|
-
none: false
|
|
210
|
-
requirements:
|
|
211
|
-
- - '='
|
|
212
|
-
- !ruby/object:Gem::Version
|
|
213
|
-
version: 0.10.0
|
|
214
|
-
type: :development
|
|
215
|
-
prerelease: false
|
|
216
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
217
|
-
none: false
|
|
218
|
-
requirements:
|
|
219
|
-
- - '='
|
|
220
|
-
- !ruby/object:Gem::Version
|
|
221
|
-
version: 0.10.0
|
|
222
156
|
description: Dynamoid is an ORM for Amazon's DynamoDB that supports offline development,
|
|
223
157
|
associations, querying, and everything else you'd expect from an ActiveRecord-style
|
|
224
158
|
replacement.
|
|
225
|
-
email:
|
|
159
|
+
email:
|
|
226
160
|
executables: []
|
|
227
161
|
extensions: []
|
|
228
162
|
extra_rdoc_files:
|
|
229
163
|
- LICENSE.txt
|
|
230
164
|
- README.markdown
|
|
231
165
|
files:
|
|
232
|
-
- .document
|
|
233
|
-
- .rspec
|
|
234
|
-
- .travis.yml
|
|
235
166
|
- Gemfile
|
|
236
|
-
- Gemfile.lock
|
|
237
|
-
- Gemfile_activemodel4
|
|
238
|
-
- Gemfile_activemodel4.lock
|
|
239
167
|
- LICENSE.txt
|
|
240
168
|
- README.markdown
|
|
241
169
|
- Rakefile
|
|
242
|
-
- VERSION
|
|
243
|
-
- doc/.nojekyll
|
|
244
|
-
- doc/Dynamoid.html
|
|
245
|
-
- doc/Dynamoid/Adapter.html
|
|
246
|
-
- doc/Dynamoid/Adapter/AwsSdk.html
|
|
247
|
-
- doc/Dynamoid/Adapter/Local.html
|
|
248
|
-
- doc/Dynamoid/Associations.html
|
|
249
|
-
- doc/Dynamoid/Associations/Association.html
|
|
250
|
-
- doc/Dynamoid/Associations/BelongsTo.html
|
|
251
|
-
- doc/Dynamoid/Associations/ClassMethods.html
|
|
252
|
-
- doc/Dynamoid/Associations/HasAndBelongsToMany.html
|
|
253
|
-
- doc/Dynamoid/Associations/HasMany.html
|
|
254
|
-
- doc/Dynamoid/Associations/HasOne.html
|
|
255
|
-
- doc/Dynamoid/Associations/ManyAssociation.html
|
|
256
|
-
- doc/Dynamoid/Associations/SingleAssociation.html
|
|
257
|
-
- doc/Dynamoid/Components.html
|
|
258
|
-
- doc/Dynamoid/Config.html
|
|
259
|
-
- doc/Dynamoid/Config/Options.html
|
|
260
|
-
- doc/Dynamoid/Criteria.html
|
|
261
|
-
- doc/Dynamoid/Criteria/Chain.html
|
|
262
|
-
- doc/Dynamoid/Criteria/ClassMethods.html
|
|
263
|
-
- doc/Dynamoid/Dirty.html
|
|
264
|
-
- doc/Dynamoid/Dirty/ClassMethods.html
|
|
265
|
-
- doc/Dynamoid/Document.html
|
|
266
|
-
- doc/Dynamoid/Document/ClassMethods.html
|
|
267
|
-
- doc/Dynamoid/Errors.html
|
|
268
|
-
- doc/Dynamoid/Errors/ConditionalCheckFailedException.html
|
|
269
|
-
- doc/Dynamoid/Errors/DocumentNotValid.html
|
|
270
|
-
- doc/Dynamoid/Errors/Error.html
|
|
271
|
-
- doc/Dynamoid/Errors/InvalidField.html
|
|
272
|
-
- doc/Dynamoid/Errors/InvalidQuery.html
|
|
273
|
-
- doc/Dynamoid/Errors/MissingRangeKey.html
|
|
274
|
-
- doc/Dynamoid/Fields.html
|
|
275
|
-
- doc/Dynamoid/Fields/ClassMethods.html
|
|
276
|
-
- doc/Dynamoid/Finders.html
|
|
277
|
-
- doc/Dynamoid/Finders/ClassMethods.html
|
|
278
|
-
- doc/Dynamoid/IdentityMap.html
|
|
279
|
-
- doc/Dynamoid/IdentityMap/ClassMethods.html
|
|
280
|
-
- doc/Dynamoid/Indexes.html
|
|
281
|
-
- doc/Dynamoid/Indexes/ClassMethods.html
|
|
282
|
-
- doc/Dynamoid/Indexes/Index.html
|
|
283
|
-
- doc/Dynamoid/Middleware.html
|
|
284
|
-
- doc/Dynamoid/Middleware/IdentityMap.html
|
|
285
|
-
- doc/Dynamoid/Persistence.html
|
|
286
|
-
- doc/Dynamoid/Persistence/ClassMethods.html
|
|
287
|
-
- doc/Dynamoid/Validations.html
|
|
288
|
-
- doc/_index.html
|
|
289
|
-
- doc/class_list.html
|
|
290
|
-
- doc/css/common.css
|
|
291
|
-
- doc/css/full_list.css
|
|
292
|
-
- doc/css/style.css
|
|
293
|
-
- doc/file.LICENSE.html
|
|
294
|
-
- doc/file.README.html
|
|
295
|
-
- doc/file_list.html
|
|
296
|
-
- doc/frames.html
|
|
297
|
-
- doc/index.html
|
|
298
|
-
- doc/js/app.js
|
|
299
|
-
- doc/js/full_list.js
|
|
300
|
-
- doc/js/jquery.js
|
|
301
|
-
- doc/method_list.html
|
|
302
|
-
- doc/top-level-namespace.html
|
|
303
170
|
- dynamoid.gemspec
|
|
304
171
|
- lib/dynamoid.rb
|
|
305
172
|
- lib/dynamoid/adapter.rb
|
|
306
|
-
- lib/dynamoid/
|
|
173
|
+
- lib/dynamoid/adapter_plugin/aws_sdk_v2.rb
|
|
307
174
|
- lib/dynamoid/associations.rb
|
|
308
175
|
- lib/dynamoid/associations/association.rb
|
|
309
176
|
- lib/dynamoid/associations/belongs_to.rb
|
|
@@ -323,71 +190,31 @@ files:
|
|
|
323
190
|
- lib/dynamoid/fields.rb
|
|
324
191
|
- lib/dynamoid/finders.rb
|
|
325
192
|
- lib/dynamoid/identity_map.rb
|
|
326
|
-
- lib/dynamoid/indexes.rb
|
|
327
|
-
- lib/dynamoid/indexes/index.rb
|
|
328
193
|
- lib/dynamoid/middleware/identity_map.rb
|
|
329
194
|
- lib/dynamoid/persistence.rb
|
|
330
195
|
- lib/dynamoid/validations.rb
|
|
331
|
-
|
|
332
|
-
- spec/app/models/camel_case.rb
|
|
333
|
-
- spec/app/models/car.rb
|
|
334
|
-
- spec/app/models/magazine.rb
|
|
335
|
-
- spec/app/models/message.rb
|
|
336
|
-
- spec/app/models/nuclear_submarine.rb
|
|
337
|
-
- spec/app/models/sponsor.rb
|
|
338
|
-
- spec/app/models/subscription.rb
|
|
339
|
-
- spec/app/models/tweet.rb
|
|
340
|
-
- spec/app/models/user.rb
|
|
341
|
-
- spec/app/models/vehicle.rb
|
|
342
|
-
- spec/dynamoid/adapter/aws_sdk_spec.rb
|
|
343
|
-
- spec/dynamoid/adapter_spec.rb
|
|
344
|
-
- spec/dynamoid/associations/association_spec.rb
|
|
345
|
-
- spec/dynamoid/associations/belongs_to_spec.rb
|
|
346
|
-
- spec/dynamoid/associations/has_and_belongs_to_many_spec.rb
|
|
347
|
-
- spec/dynamoid/associations/has_many_spec.rb
|
|
348
|
-
- spec/dynamoid/associations/has_one_spec.rb
|
|
349
|
-
- spec/dynamoid/associations_spec.rb
|
|
350
|
-
- spec/dynamoid/config_spec.rb
|
|
351
|
-
- spec/dynamoid/criteria/chain_spec.rb
|
|
352
|
-
- spec/dynamoid/criteria_spec.rb
|
|
353
|
-
- spec/dynamoid/dirty_spec.rb
|
|
354
|
-
- spec/dynamoid/document_spec.rb
|
|
355
|
-
- spec/dynamoid/fields_spec.rb
|
|
356
|
-
- spec/dynamoid/finders_spec.rb
|
|
357
|
-
- spec/dynamoid/identity_map_spec.rb
|
|
358
|
-
- spec/dynamoid/indexes/index_spec.rb
|
|
359
|
-
- spec/dynamoid/indexes_spec.rb
|
|
360
|
-
- spec/dynamoid/persistence_spec.rb
|
|
361
|
-
- spec/dynamoid/validations_spec.rb
|
|
362
|
-
- spec/dynamoid_spec.rb
|
|
363
|
-
- spec/spec_helper.rb
|
|
364
|
-
- spec/support/with_partitioning.rb
|
|
365
|
-
homepage: http://github.com/Veraticus/Dynamoid
|
|
196
|
+
homepage: http://github.com/Dynamoid/Dynamoid
|
|
366
197
|
licenses:
|
|
367
198
|
- MIT
|
|
199
|
+
metadata: {}
|
|
368
200
|
post_install_message:
|
|
369
201
|
rdoc_options: []
|
|
370
202
|
require_paths:
|
|
371
203
|
- lib
|
|
372
204
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
373
|
-
none: false
|
|
374
205
|
requirements:
|
|
375
|
-
- -
|
|
206
|
+
- - ">="
|
|
376
207
|
- !ruby/object:Gem::Version
|
|
377
208
|
version: '0'
|
|
378
|
-
segments:
|
|
379
|
-
- 0
|
|
380
|
-
hash: 1424756410628377815
|
|
381
209
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
382
|
-
none: false
|
|
383
210
|
requirements:
|
|
384
|
-
- -
|
|
211
|
+
- - ">="
|
|
385
212
|
- !ruby/object:Gem::Version
|
|
386
213
|
version: '0'
|
|
387
214
|
requirements: []
|
|
388
215
|
rubyforge_project:
|
|
389
|
-
rubygems_version:
|
|
216
|
+
rubygems_version: 2.4.5.1
|
|
390
217
|
signing_key:
|
|
391
|
-
specification_version:
|
|
218
|
+
specification_version: 4
|
|
392
219
|
summary: Dynamoid is an ORM for Amazon's DynamoDB
|
|
393
220
|
test_files: []
|