event_source 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee1cbda051411a8b9d9c84b228c5df06057e083e
4
- data.tar.gz: c9a86adbf893660447e89097d112d4e8aad24d02
3
+ metadata.gz: eb914b34c5ac365c2393fe93faf8d60127c110b0
4
+ data.tar.gz: 936b70c31f5cd44aa650b035c02344aa20bdccbd
5
5
  SHA512:
6
- metadata.gz: 9d86e6e6708c8bf374d2ad2f428d04f1a4262404bd521c8843de89beb7a573df418c6607407eb1b2c5aff0004ac462bc13b2647e526b8dce5a8ec7862248893e
7
- data.tar.gz: 6d69660476cdaef751795d2afb0d47623157239c0e1eaf8a9fd2f845c1e0f376e052ae670d491ca9834f2c8bad25fde8861337c5d1a7cee3584ba87c3c8a6346
6
+ metadata.gz: 5e73db02567fe3240d8958235adac8884a9f5d4bb1783fed344be05b2cf279f834017f0d4d31798fe1cf603fd62b6a1f06ba24914188e2d595b6dd2b9142f0a0
7
+ data.tar.gz: 83da293f76c79226baafc460beb0394c7e922bde23fed2775dbbae8c87846e5bca764e0adeff7bd1dd317fe62c011e13ee66ab4d0c1f2028199b07cb4531752f
@@ -10,44 +10,39 @@ module EventSource
10
10
  end
11
11
 
12
12
  def rebuild(uid, events)
13
+ @rebuilding = true
13
14
  return self.create(uid) if events.length == 0
14
15
 
15
16
  entity = self.new
16
17
  entity.send(:uid=, uid)
17
18
 
18
19
  events.each do |e|
19
- data = JSON.parse(e.data)
20
- data.keys.each do |attr|
21
- entity.send("#{attr}=", data[attr])
22
- end
20
+ entity.send(e.name, *(e.get_args))
23
21
  end
22
+ @rebuilding = false
24
23
 
25
24
  entity
26
25
  end
27
26
 
28
27
  def on_event(name, &block)
29
28
  self.send(:define_method, name) do |*args|
30
- returnValue = block.call(args.unshift(self))
31
- entity_events << EventSource::Event.create(name, self)
29
+ block_args = [self] + args
30
+ returnValue = block.call(block_args)
31
+ return if @rebuilding
32
+
33
+ entity_events << EventSource::Event.create(name, self, args)
32
34
 
33
35
  # if repo is nil, that's because this isn't being executed in the context of a
34
36
  # transaction and the result won't be saved
35
37
  repo = EventSource::EntityRepository.current
36
- repo.entities << self if repo
38
+ repo.add(self) if repo
37
39
 
38
40
  returnValue
39
41
  end
40
42
  end
41
43
  end
42
44
 
43
- attr_reader :uid,
44
- :entity_changes
45
-
46
- def set(attr_name, &block)
47
- val = block.call
48
- @entity_changes[attr_name.to_sym] = val
49
- self.send("#{attr_name}=", val)
50
- end
45
+ attr_reader :uid
51
46
 
52
47
  def entity_events
53
48
  @events ||= Array.new
@@ -61,7 +56,9 @@ module EventSource
61
56
  private
62
57
 
63
58
  def initialize
64
- @entity_changes = Hash.new
59
+ if defined? on_initialized
60
+ on_initialized
61
+ end
65
62
  end
66
63
 
67
64
  def uid=(new_uid)
@@ -12,13 +12,17 @@ module EventSource
12
12
  event
13
13
  end
14
14
 
15
- def create(name, entity)
15
+ def create(name, entity, args)
16
16
  event = self.new
17
- event.send(:new_from_entity, name, entity)
17
+ event.send(:new_from_entity, name, entity, args)
18
18
  event
19
19
  end
20
20
  end
21
21
 
22
+ def get_args
23
+ JSON.parse(data)
24
+ end
25
+
22
26
  def save
23
27
  raise CannotSaveRebuiltEvent if @is_rebuilt
24
28
  EventSource::EventRepository.current.save(self)
@@ -26,10 +30,10 @@ module EventSource
26
30
 
27
31
  private
28
32
 
29
- def new_from_entity(name, entity)
33
+ def new_from_entity(name, entity, args)
30
34
  @name = name.to_s
31
35
  @entity_id = entity.uid
32
- @data = entity.entity_changes.to_json
36
+ @data = args.to_json
33
37
  @created_at = Time.now
34
38
  @entity_type = entity.class.to_s.underscore
35
39
 
@@ -1,3 +1,3 @@
1
1
  module EventSource
2
- Version = '0.1.2'
2
+ Version = '0.1.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: event_source
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Louis Salin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-05 00:00:00.000000000 Z
11
+ date: 2013-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec