dynamoid 0.7.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +2 -24
  3. data/README.markdown +89 -73
  4. data/Rakefile +10 -36
  5. data/dynamoid.gemspec +56 -191
  6. data/lib/dynamoid.rb +6 -4
  7. data/lib/dynamoid/adapter.rb +64 -150
  8. data/lib/dynamoid/adapter_plugin/aws_sdk_v2.rb +579 -0
  9. data/lib/dynamoid/components.rb +0 -1
  10. data/lib/dynamoid/config.rb +2 -5
  11. data/lib/dynamoid/criteria.rb +1 -1
  12. data/lib/dynamoid/criteria/chain.rb +27 -140
  13. data/lib/dynamoid/document.rb +2 -2
  14. data/lib/dynamoid/errors.rb +30 -9
  15. data/lib/dynamoid/fields.rb +15 -3
  16. data/lib/dynamoid/finders.rb +7 -6
  17. data/lib/dynamoid/identity_map.rb +1 -5
  18. data/lib/dynamoid/persistence.rb +108 -93
  19. metadata +56 -229
  20. data/.document +0 -5
  21. data/.rspec +0 -1
  22. data/.travis.yml +0 -7
  23. data/Gemfile.lock +0 -81
  24. data/Gemfile_activemodel4 +0 -24
  25. data/Gemfile_activemodel4.lock +0 -88
  26. data/VERSION +0 -1
  27. data/doc/.nojekyll +0 -0
  28. data/doc/Dynamoid.html +0 -328
  29. data/doc/Dynamoid/Adapter.html +0 -1872
  30. data/doc/Dynamoid/Adapter/AwsSdk.html +0 -2101
  31. data/doc/Dynamoid/Adapter/Local.html +0 -1574
  32. data/doc/Dynamoid/Associations.html +0 -138
  33. data/doc/Dynamoid/Associations/Association.html +0 -847
  34. data/doc/Dynamoid/Associations/BelongsTo.html +0 -161
  35. data/doc/Dynamoid/Associations/ClassMethods.html +0 -766
  36. data/doc/Dynamoid/Associations/HasAndBelongsToMany.html +0 -167
  37. data/doc/Dynamoid/Associations/HasMany.html +0 -167
  38. data/doc/Dynamoid/Associations/HasOne.html +0 -161
  39. data/doc/Dynamoid/Associations/ManyAssociation.html +0 -1684
  40. data/doc/Dynamoid/Associations/SingleAssociation.html +0 -627
  41. data/doc/Dynamoid/Components.html +0 -242
  42. data/doc/Dynamoid/Config.html +0 -412
  43. data/doc/Dynamoid/Config/Options.html +0 -638
  44. data/doc/Dynamoid/Criteria.html +0 -138
  45. data/doc/Dynamoid/Criteria/Chain.html +0 -1471
  46. data/doc/Dynamoid/Criteria/ClassMethods.html +0 -105
  47. data/doc/Dynamoid/Dirty.html +0 -424
  48. data/doc/Dynamoid/Dirty/ClassMethods.html +0 -174
  49. data/doc/Dynamoid/Document.html +0 -1033
  50. data/doc/Dynamoid/Document/ClassMethods.html +0 -1116
  51. data/doc/Dynamoid/Errors.html +0 -125
  52. data/doc/Dynamoid/Errors/ConditionalCheckFailedException.html +0 -141
  53. data/doc/Dynamoid/Errors/DocumentNotValid.html +0 -221
  54. data/doc/Dynamoid/Errors/Error.html +0 -137
  55. data/doc/Dynamoid/Errors/InvalidField.html +0 -141
  56. data/doc/Dynamoid/Errors/InvalidQuery.html +0 -131
  57. data/doc/Dynamoid/Errors/MissingRangeKey.html +0 -141
  58. data/doc/Dynamoid/Fields.html +0 -686
  59. data/doc/Dynamoid/Fields/ClassMethods.html +0 -438
  60. data/doc/Dynamoid/Finders.html +0 -135
  61. data/doc/Dynamoid/Finders/ClassMethods.html +0 -943
  62. data/doc/Dynamoid/IdentityMap.html +0 -492
  63. data/doc/Dynamoid/IdentityMap/ClassMethods.html +0 -534
  64. data/doc/Dynamoid/Indexes.html +0 -321
  65. data/doc/Dynamoid/Indexes/ClassMethods.html +0 -369
  66. data/doc/Dynamoid/Indexes/Index.html +0 -1142
  67. data/doc/Dynamoid/Middleware.html +0 -115
  68. data/doc/Dynamoid/Middleware/IdentityMap.html +0 -264
  69. data/doc/Dynamoid/Persistence.html +0 -892
  70. data/doc/Dynamoid/Persistence/ClassMethods.html +0 -836
  71. data/doc/Dynamoid/Validations.html +0 -415
  72. data/doc/_index.html +0 -506
  73. data/doc/class_list.html +0 -53
  74. data/doc/css/common.css +0 -1
  75. data/doc/css/full_list.css +0 -57
  76. data/doc/css/style.css +0 -338
  77. data/doc/file.LICENSE.html +0 -73
  78. data/doc/file.README.html +0 -416
  79. data/doc/file_list.html +0 -58
  80. data/doc/frames.html +0 -28
  81. data/doc/index.html +0 -416
  82. data/doc/js/app.js +0 -214
  83. data/doc/js/full_list.js +0 -178
  84. data/doc/js/jquery.js +0 -4
  85. data/doc/method_list.html +0 -1144
  86. data/doc/top-level-namespace.html +0 -112
  87. data/lib/dynamoid/adapter/aws_sdk.rb +0 -287
  88. data/lib/dynamoid/indexes.rb +0 -69
  89. data/lib/dynamoid/indexes/index.rb +0 -103
  90. data/spec/app/models/address.rb +0 -13
  91. data/spec/app/models/camel_case.rb +0 -34
  92. data/spec/app/models/car.rb +0 -6
  93. data/spec/app/models/magazine.rb +0 -11
  94. data/spec/app/models/message.rb +0 -9
  95. data/spec/app/models/nuclear_submarine.rb +0 -5
  96. data/spec/app/models/sponsor.rb +0 -8
  97. data/spec/app/models/subscription.rb +0 -12
  98. data/spec/app/models/tweet.rb +0 -12
  99. data/spec/app/models/user.rb +0 -26
  100. data/spec/app/models/vehicle.rb +0 -7
  101. data/spec/dynamoid/adapter/aws_sdk_spec.rb +0 -376
  102. data/spec/dynamoid/adapter_spec.rb +0 -155
  103. data/spec/dynamoid/associations/association_spec.rb +0 -194
  104. data/spec/dynamoid/associations/belongs_to_spec.rb +0 -71
  105. data/spec/dynamoid/associations/has_and_belongs_to_many_spec.rb +0 -47
  106. data/spec/dynamoid/associations/has_many_spec.rb +0 -42
  107. data/spec/dynamoid/associations/has_one_spec.rb +0 -45
  108. data/spec/dynamoid/associations_spec.rb +0 -16
  109. data/spec/dynamoid/config_spec.rb +0 -27
  110. data/spec/dynamoid/criteria/chain_spec.rb +0 -210
  111. data/spec/dynamoid/criteria_spec.rb +0 -75
  112. data/spec/dynamoid/dirty_spec.rb +0 -57
  113. data/spec/dynamoid/document_spec.rb +0 -180
  114. data/spec/dynamoid/fields_spec.rb +0 -156
  115. data/spec/dynamoid/finders_spec.rb +0 -147
  116. data/spec/dynamoid/identity_map_spec.rb +0 -45
  117. data/spec/dynamoid/indexes/index_spec.rb +0 -104
  118. data/spec/dynamoid/indexes_spec.rb +0 -25
  119. data/spec/dynamoid/persistence_spec.rb +0 -301
  120. data/spec/dynamoid/validations_spec.rb +0 -36
  121. data/spec/dynamoid_spec.rb +0 -9
  122. data/spec/spec_helper.rb +0 -55
  123. 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
- models.each { |m| m.identity_map.clear }
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
@@ -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
- return true if table_exists?(options[:table_name])
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. Given a string, it'll determine (based on the type provided) whether to turn it into a
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 value.nil? && (default_value = options[:default])
80
- value = default_value.respond_to?(:call) ? default_value.call : default_value
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
- case options[:type]
86
- when :string
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
- when :serialized
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
- raise ArgumentError, "Unknown type #{options[:type]}"
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
- case type
126
- when :integer, :float, :datetime
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
- raise 'unknown type'
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
- yield t
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::ConditionalCheckFailedException
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 and all indexes.
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::Adapter.delete(self.class.table_name, self.hash_key, options)
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
- return if value.nil? || (value.respond_to?(:empty?) && value.empty?)
236
-
237
- case options[:type]
238
- when :string
239
- value.to_s
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
- Set[value]
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
- raise ArgumentError, "Unknown type #{options[:type]}"
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; then afterwards,
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
- raise "Optimistic locking cannot be used with Partitioning" if(Dynamoid::Config.partitioning)
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
- Dynamoid::Adapter.write(self.class.table_name, self.dump, conditions)
285
- save_indexes
286
- @new_record = false
287
- true
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.7.1
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
- - Josh Symonds
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: 2013-08-05 00:00:00.000000000 Z
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: '0'
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: '0'
43
+ version: '4'
30
44
  - !ruby/object:Gem::Dependency
31
- name: tzinfo
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: '0'
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: '0'
57
+ version: '2'
46
58
  - !ruby/object:Gem::Dependency
47
- name: aws-sdk
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: '0'
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: '0'
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: josh@joshsymonds.com
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/adapter/aws_sdk.rb
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
- - spec/app/models/address.rb
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: 1.8.24
216
+ rubygems_version: 2.4.5.1
390
217
  signing_key:
391
- specification_version: 3
218
+ specification_version: 4
392
219
  summary: Dynamoid is an ORM for Amazon's DynamoDB
393
220
  test_files: []