entity_store 0.0.10 → 0.0.13

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.
@@ -10,9 +10,21 @@ module EntityStore
10
10
  def entity_value_attribute(name, klass)
11
11
  define_method(name) { instance_variable_get("@#{name}") }
12
12
  define_method("#{name}=") do |value|
13
- instance_variable_set("@#{name}", value.is_a?(Hash) ? klass.new(value) : value)
13
+ instance_variable_set("@#{name}", self.class._eval_entity_value_setter(value, klass))
14
14
  end
15
15
  end
16
+
17
+ def _eval_entity_value_setter(value, klass)
18
+ case value
19
+ when Array
20
+ klass.new(Hash[*value.flatten])
21
+ when Hash
22
+ klass.new(value)
23
+ else
24
+ value
25
+ end
26
+ end
27
+
16
28
  end
17
29
  end
18
30
  end
@@ -2,7 +2,7 @@ module EntityStore
2
2
  module HashSerialization
3
3
 
4
4
  def initialize(attr={})
5
- attr.each_pair { |k,v| send("#{k}=", v) if respond_to?("#{k}=") }
5
+ attr.each { |item| send("#{item[0]}=", item[1]) if respond_to?("#{item[0]}=") }
6
6
  end
7
7
 
8
8
  # Public - generate attributes hash
@@ -21,7 +21,9 @@ module EntityStore
21
21
  def attribute_value(value)
22
22
  if value.respond_to?(:attributes)
23
23
  value.attributes
24
- elsif value.respond_to?(:each)
24
+ elsif value.is_a?(Hash)
25
+ value
26
+ elsif value.is_a?(Array)
25
27
  value.collect { |v| attribute_value(v) }
26
28
  else
27
29
  value
@@ -75,9 +75,13 @@ module EntityStore
75
75
 
76
76
  since_version = attrs['snapshot'] ? attrs['snapshot']['version'] : nil
77
77
 
78
- get_events(id, since_version).each do |e|
79
- e.apply(entity)
80
- entity.version = e.entity_version
78
+ get_events(id, since_version).each do |event|
79
+ begin
80
+ event.apply(entity)
81
+ rescue => e
82
+ EntityStore.logger.error { "Failed to apply #{event.class.name} #{event.attributes} to #{id} with #{e.inspect}" }
83
+ end
84
+ entity.version = event.entity_version
81
85
  end
82
86
 
83
87
  entity
@@ -1,3 +1,3 @@
1
1
  module EntityStore
2
- VERSION = "0.0.10".freeze
2
+ VERSION = "0.0.13".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entity_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.13
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-17 00:00:00.000000000 Z
12
+ date: 2012-10-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongo