ocean-dynamo 0.1.3 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f5ae28e5e708104d6732e25bcda4af633b69570d
4
- data.tar.gz: 002e58e877f964d1a547b330fb5bf3cceadfcabe
3
+ metadata.gz: 4bb66981fe7a08584a0a51f81e8cc458a354cac7
4
+ data.tar.gz: d3ee6d39bfac9fe8622b91e7e485dbcbca16c8d3
5
5
  SHA512:
6
- metadata.gz: 4b2065e46adad9805f0fa494a627aad7d1f577156d195309cd7ba4cf719638f7ded898d57c782576a20f08d621020a93269abc00e66cfb8d8c5103582dc6abd3
7
- data.tar.gz: 892ce7432d451aae76b8ded119501c973961a5ee0d2cbb3b9a6ca4fd5027540ffb2f89d7c66f706a5d7c78d9b326f1b28bb721f749845d7b68c5b5b7b95a0c07
6
+ metadata.gz: 4408c7038ebb322f96fd12d65b399f2dc7fdd59708a7f8d13659bba56b4996bb4987e9d052004e7cc0fa35c41e16548364ae87e7df9823adb5d2c03c0dc1ed29
7
+ data.tar.gz: 29d4cdabc73cd9f84895cd9000c10099f001d56d5bffdfc92d0aab2dee4a4e1b66316e405945f38228814d40224e8ae91aabdcfbc9342da5ab57d51f297d13f5
@@ -240,18 +240,21 @@ module OceanDynamo
240
240
  attr_reader :dynamo_item
241
241
 
242
242
 
243
- def initialize(attributes={})
243
+ def initialize(attrs={})
244
244
  run_callbacks :initialize do
245
245
  @attributes = HashWithIndifferentAccess.new
246
- fields.each do |name, v|
247
- write_attribute(name, evaluate_default(v[:default])) unless read_attribute(name)
246
+ fields.each do |name, md|
247
+ write_attribute(name, evaluate_default(md[:default], md[:type]))
248
248
  self.class.class_eval "def #{name}; read_attribute('#{name}'); end"
249
249
  self.class.class_eval "def #{name}=(value); write_attribute('#{name}', value); end"
250
250
  if fields[name][:type] == :boolean
251
251
  self.class.class_eval "def #{name}?; read_attribute('#{name}'); end"
252
252
  end
253
253
  end
254
- super
254
+ if attrs
255
+ attrs.delete_if { |k, v| !fields.has_key?(k) }
256
+ end
257
+ super(attrs)
255
258
  @dynamo_item = nil
256
259
  @destroyed = false
257
260
  @new_record = true
@@ -352,8 +355,8 @@ module OceanDynamo
352
355
  def deserialize_attribute(value, metadata,
353
356
  type: metadata[:type],
354
357
  default: metadata[:default])
355
- if value == nil && default != nil && type != :string
356
- return evaluate_default(default)
358
+ if value == nil && type != :string
359
+ return evaluate_default(default, type)
357
360
  end
358
361
  case type
359
362
  when :string
@@ -445,7 +448,8 @@ module OceanDynamo
445
448
  run_callbacks :commit do
446
449
  run_callbacks :save do
447
450
  run_callbacks :create do
448
- write_attribute(table_hash_key, SecureRandom.uuid) if read_attribute(table_hash_key) == nil
451
+ k = read_attribute(table_hash_key)
452
+ write_attribute(table_hash_key, SecureRandom.uuid) if k == "" || k == nil
449
453
  t = Time.now
450
454
  self.created_at ||= t
451
455
  self.updated_at ||= t
@@ -516,10 +520,11 @@ module OceanDynamo
516
520
 
517
521
  protected
518
522
 
519
- def evaluate_default(v)
520
- return v.call if v.is_a?(Proc)
521
- return v.clone if v.is_a?(Array) || v.is_a?(String) # Instances need their own copy
522
- v
523
+ def evaluate_default(default, type)
524
+ return default.call if default.is_a?(Proc)
525
+ return "" if default == nil && type == :string
526
+ return default.clone if default.is_a?(Array) || default.is_a?(String) # Instances need their own copy
527
+ default
523
528
  end
524
529
 
525
530
 
@@ -1,3 +1,3 @@
1
1
  module OceanDynamo
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ocean-dynamo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Bengtson