ev 0.0.2 → 0.0.3

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: 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: []