ev 0.0.2 → 0.0.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: 6bb658471b7bb5e4309bde1938a8a099655d78a7
4
- data.tar.gz: dfe76bb3ca431076ae2998094871141b12d3c90c
3
+ metadata.gz: a56fef9501146cb7262425b5a4c11cedfe4f2b62
4
+ data.tar.gz: 3c10897dbf2591a87eaa2b9bc680305ecbdab9f5
5
5
  SHA512:
6
- metadata.gz: ff88b298c2676ad6ee4e96bba5685e3a82ec18ab987b88feb130abb48ae5057945be08cd0acfcbe21ca5ccb1d7e077be65937cb8a73363fbd234fef04e38c276
7
- data.tar.gz: 12464c8a2f69acda69e45d1ad90a036853dc9eba7a42706551ce712401de1559540e513484967678ed56649d9a93a5304f6309cf79eae4d81cbfcdbde44af517
6
+ metadata.gz: 7b910324836221efdbefb585f825596fbc171d094e893a7d74868d0b787c83e8b30969deddee92a456800fa5fbfd8da6082f2dec73cdf10bda21a7eaaea40d00
7
+ data.tar.gz: 1f976c2ef91d187a68c6f0de7f6a7bfcf6870a328c3e877ca8922142814eebabcd0fa41865e3dbaa9da1a82ba01a308a98a2c874a2c09264803e308b7254f1f3
data/README.md CHANGED
@@ -1,2 +1,78 @@
1
1
  # ev
2
- Event sourcing tools
2
+
3
+ ```ruby
4
+ require 'ev'
5
+ require 'set'
6
+
7
+ ItemAdded = Struct.new(:name)
8
+ ItemRemoved = Struct.new(:name)
9
+
10
+ class TodoList < EV::EventSource
11
+ def add_item(name)
12
+ raise "Item already added" if items.include?(name)
13
+ apply(ItemAdded.new(name))
14
+ end
15
+
16
+ def remove_item(name)
17
+ raise "Item cannot be removed because it does not exist" unless items.include?(name)
18
+ apply(ItemRemoved.new(name))
19
+ end
20
+
21
+ protected
22
+
23
+ def items
24
+ @items ||= Set.new
25
+ end
26
+
27
+ def handle(event)
28
+ case event
29
+ when ItemAdded
30
+ items << event.name
31
+ when ItemRemoved
32
+ items.delete(event.name)
33
+ end
34
+ end
35
+ end
36
+
37
+ def debug
38
+ begin
39
+ es = yield
40
+ puts " dirty? #{es.dirty?.inspect}"
41
+ puts " version #{es.version}"
42
+ puts " changes #{es.changes.inspect}"
43
+ rescue => e
44
+ puts " ERROR: #{e.message}"
45
+ end
46
+ end
47
+
48
+ todo_list = nil
49
+
50
+ debug do
51
+ puts "Initialization:"
52
+ todo_list = TodoList.new_from_events([ItemAdded.new("Buy a thing"), ItemAdded.new("Clean room")])
53
+ end
54
+
55
+ debug do
56
+ puts "Adding \"Take back library book\":"
57
+ todo_list.add_item("Take back library book")
58
+ todo_list
59
+ end
60
+
61
+ debug do
62
+ puts "Commit:"
63
+ todo_list.commit
64
+ todo_list
65
+ end
66
+
67
+ debug do
68
+ puts "Trying to add \"Take back library book\" again:"
69
+ todo_list.add_item("Take back library book")
70
+ todo_list
71
+ end
72
+
73
+ debug do
74
+ puts "Trying to remove \"Something else\" again:"
75
+ todo_list.remove_item("Something else")
76
+ todo_list
77
+ end
78
+ ```
@@ -1,5 +1,5 @@
1
1
  module EV
2
- class EventRoot
2
+ class EventSource
3
3
  def self.new_from_events(events)
4
4
  allocate.tap do |root|
5
5
  root.initialize_from_events(events)
data/lib/ev/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module EV
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,15 +1,15 @@
1
1
  require 'spec_helper'
2
- require_relative '../../../lib/ev/event_root'
2
+ require_relative '../../../lib/ev/event_source'
3
3
 
4
4
  module EV
5
- class DummyModel < EventRoot
5
+ class DummyModel < EventSource
6
6
  def handle(event)
7
7
  end
8
8
  end
9
9
 
10
- describe EventRoot do
10
+ describe EventSource do
11
11
  describe ".new_from_events" do
12
- subject { EventRoot }
12
+ subject { EventSource }
13
13
 
14
14
  it "does not call new" do
15
15
  expect(subject).to_not receive(:new)
@@ -18,7 +18,7 @@ module EV
18
18
 
19
19
  describe "with events" do
20
20
  before do
21
- root = EventRoot.new
21
+ root = EventSource.new
22
22
  expect(root).to receive(:handle).twice
23
23
  expect(subject).to receive(:allocate).and_return(root)
24
24
  end
@@ -40,7 +40,7 @@ module EV
40
40
  end
41
41
 
42
42
  describe "#apply" do
43
- subject { EventRoot.new }
43
+ subject { EventSource.new }
44
44
  before do
45
45
  @event = {foo: :bar}
46
46
  expect(subject).to receive(:handle).with(@event)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Conger-Eldeen
@@ -39,9 +39,9 @@ files:
39
39
  - README.md
40
40
  - ev.gemspec
41
41
  - lib/ev.rb
42
- - lib/ev/event_root.rb
42
+ - lib/ev/event_source.rb
43
43
  - lib/ev/version.rb
44
- - spec/lib/shift/aggregate_base_spec.rb
44
+ - spec/lib/ev/event_source_spec.rb
45
45
  - spec/spec_helper.rb
46
46
  homepage: https://www.github.com/mceldeen/ev
47
47
  licenses: []