entity_store 0.0.10 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -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