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.
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: []