ruby_event_store 0.8.0 → 0.9.0

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: 614b77bc975d7069bd524039c78df5291f68e0be
4
- data.tar.gz: d975aaaa8bb77c64a74917f8e4c7d85158b5862b
3
+ metadata.gz: ccc76d1623b794eed62f855d2e8639cfb1e8448a
4
+ data.tar.gz: d23636b51426bfc1318b5b3b2fa6f66f7a11bd88
5
5
  SHA512:
6
- metadata.gz: 4262004b0bb3326f3bea2d6d001dd5e1e61eeb0a202b00c9708cb9130f4ef3f8d578ba45884e5ce0e22e701fbea56affc0f781b45ec175c6dea700b75c66ccbc
7
- data.tar.gz: c6de5b7aa1817100b9020a7980ac3e56107f18a20261b555291025f502d6e78577ef55ee2fb27e27a18be3e0311b5b033057186b7b04e45a229a8440dd4aecbd
6
+ metadata.gz: fdc4e73526e305ee7009f18a49a867d9c3c94dc26ce8c9a50b4449443a99339742f72404764e1b35ef274b4b7aed5d875987658a6a5ce2107446fbf251ba9956
7
+ data.tar.gz: 0c23c71f915e4666c8e3f2fa5ebd82ed92e2010295ff824c3b7d53d49a61b56d36e50f0f9346754cf96417bd75e2a811c6b39e1e7a291a03dd686f911d4f6d6d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ### 0.9.0 (24.06.2016)
2
+
3
+ * Change: Call instead of handle_event, handle_event stays for now but is deprecated PR #18
4
+ * Fix: Clarify Licensing terms #23 - MIT licence it is from now
5
+
1
6
  ### 0.8.0 (21.06.2016)
2
7
 
3
8
  * Change: Possibility to create projection based on all events PR #19
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Arkency
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
@@ -38,7 +38,7 @@ module RubyEventStore
38
38
  @current_state ||= initial_state
39
39
  end
40
40
 
41
- def handle_event(event)
41
+ def call(event)
42
42
  handlers[event.class].(current_state, event)
43
43
  end
44
44
 
@@ -46,7 +46,7 @@ module RubyEventStore
46
46
  handlers.keys
47
47
  end
48
48
 
49
- def call(event_store, start = :head, count = PAGE_SIZE)
49
+ def run(event_store, start = :head, count = PAGE_SIZE)
50
50
  if streams.any?
51
51
  reduce_from_streams(event_store, start, count)
52
52
  else
@@ -1,7 +1,31 @@
1
1
  module RubyEventStore
2
2
  module PubSub
3
3
  class Broker
4
- DEFAULT_DISPATCHER = ->(subscriber, event) { subscriber.handle_event(event) }
4
+ class Dispatcher
5
+ def call(subscriber, event)
6
+ ensure_method_defined(subscriber)
7
+ if subscriber.respond_to?(:call)
8
+ subscriber.call(event)
9
+ else
10
+ warn "[DEPRECATION] `handle_event` is deprecated. Please use `call` instead."
11
+ subscriber.handle_event(event)
12
+ end
13
+ end
14
+
15
+ private
16
+ def ensure_method_defined(subscriber)
17
+ unless subscriber.respond_to?(:call) || subscriber.respond_to?(:handle_event)
18
+ raise MethodNotDefined.new(method_not_defined_message(subscriber))
19
+ end
20
+ end
21
+
22
+ def method_not_defined_message(subscriber)
23
+ "Neither #call nor #handle_event method found in #{subscriber.class} subscriber. Are you sure it is a valid subscriber?"
24
+ end
25
+ end
26
+ private_constant :Dispatcher
27
+
28
+ DEFAULT_DISPATCHER = Dispatcher.new
5
29
 
6
30
  def initialize(dispatcher = DEFAULT_DISPATCHER)
7
31
  @subscribers = Hash.new {|hsh, key| hsh[key] = [] }
@@ -32,7 +56,6 @@ module RubyEventStore
32
56
 
33
57
  def verify_subscriber(subscriber)
34
58
  raise SubscriberNotExist if subscriber.nil?
35
- ensure_method_defined(subscriber)
36
59
  end
37
60
 
38
61
  def subscribe(subscriber, event_types)
@@ -40,19 +63,9 @@ module RubyEventStore
40
63
  ->() {event_types.each{ |type| subscribers[type].delete(subscriber) } }
41
64
  end
42
65
 
43
- def ensure_method_defined(subscriber)
44
- unless subscriber.methods.include? :handle_event
45
- raise MethodNotDefined.new(method_not_defined_message(subscriber))
46
- end
47
- end
48
-
49
66
  def all_subscribers_for(event_type)
50
67
  subscribers[event_type] + @global_subscribers
51
68
  end
52
-
53
- def method_not_defined_message(subscriber)
54
- "#handle_event method is not found in #{subscriber.class} subscriber. Are you sure it is a valid subscriber?"
55
- end
56
69
  end
57
70
  end
58
71
  end
@@ -3,9 +3,9 @@ RSpec.shared_examples :event_broker do |broker_class|
3
3
  Test2DomainEvent = Class.new(RubyEventStore::Event)
4
4
  Test3DomainEvent = Class.new(RubyEventStore::Event)
5
5
 
6
- class IncorrectDenormalizer
6
+ class InvalidTestHandler
7
7
  end
8
- class TestHandler
8
+ class DeprectatedTestHandler
9
9
  def initialize
10
10
  @events = []
11
11
  end
@@ -16,6 +16,17 @@ RSpec.shared_examples :event_broker do |broker_class|
16
16
 
17
17
  attr_reader :events
18
18
  end
19
+ class TestHandler
20
+ def initialize
21
+ @events = []
22
+ end
23
+
24
+ def call(event)
25
+ @events << event
26
+ end
27
+
28
+ attr_reader :events
29
+ end
19
30
  class TestDispatcher
20
31
  attr_reader :dispatched
21
32
 
@@ -57,13 +68,44 @@ RSpec.shared_examples :event_broker do |broker_class|
57
68
  expect(global_handler.events).to eq([event1,event2,event3])
58
69
  end
59
70
 
71
+ it 'notify subscribed deprecated handlers' do
72
+ handler = DeprectatedTestHandler.new
73
+ another_handler = DeprectatedTestHandler.new
74
+ global_handler = DeprectatedTestHandler.new
75
+
76
+ broker.add_subscriber(handler, [Test1DomainEvent, Test3DomainEvent])
77
+ broker.add_subscriber(another_handler, [Test2DomainEvent])
78
+ broker.add_global_subscriber(global_handler)
79
+
80
+ event1 = Test1DomainEvent.new
81
+ event2 = Test2DomainEvent.new
82
+ event3 = Test3DomainEvent.new
83
+
84
+ [event1, event2, event3].each do |ev|
85
+ broker.notify_subscribers(ev)
86
+ end
87
+
88
+ expect(handler.events).to eq([event1,event3])
89
+ expect(another_handler.events).to eq([event2])
90
+ expect(global_handler.events).to eq([event1,event2,event3])
91
+ end
92
+
60
93
  it 'raises error when no valid method on handler' do
61
- message = "#handle_event method is not found " +
62
- "in Subscribers::IncorrectDenormalizer subscriber." +
94
+ message = "Neither #call nor #handle_event method found " +
95
+ "in InvalidTestHandler subscriber." +
96
+ " Are you sure it is a valid subscriber?"
97
+ subscriber = InvalidTestHandler.new
98
+ broker.add_subscriber(subscriber, [Test1DomainEvent])
99
+ expect { broker.notify_subscribers(Test1DomainEvent.new) }.to raise_error(RubyEventStore::MethodNotDefined, message)
100
+ end
101
+
102
+ it 'raises error when no valid method on global handler' do
103
+ message = "Neither #call nor #handle_event method found " +
104
+ "in InvalidTestHandler subscriber." +
63
105
  " Are you sure it is a valid subscriber?"
64
- subscriber = Subscribers::IncorrectDenormalizer.new
65
- expect { broker.add_subscriber(subscriber, [])}.to raise_error(RubyEventStore::MethodNotDefined, message)
66
- expect { broker.add_global_subscriber(subscriber)}.to raise_error(RubyEventStore::MethodNotDefined, message)
106
+ subscriber = InvalidTestHandler.new
107
+ broker.add_global_subscriber(subscriber)
108
+ expect { broker.notify_subscribers(Test1DomainEvent.new) }.to raise_error(RubyEventStore::MethodNotDefined, message)
67
109
  end
68
110
 
69
111
  it 'returns lambda as an output of global subscribe methods' do
@@ -114,4 +156,11 @@ RSpec.shared_examples :event_broker do |broker_class|
114
156
  expect(dispatcher.dispatched).to eq([{subscriber: handler, event: event1}])
115
157
  end
116
158
 
159
+ it 'deprecation message when no call method in handler' do
160
+ subscriber = DeprectatedTestHandler.new
161
+ broker.add_global_subscriber(subscriber)
162
+ expect { broker.notify_subscribers(Test1DomainEvent.new) }.to output(
163
+ "[DEPRECATION] `handle_event` is deprecated. Please use `call` instead.\n").to_stderr
164
+ end
165
+
117
166
  end
@@ -1,3 +1,3 @@
1
1
  module RubyEventStore
2
- VERSION = '0.8.0'
2
+ VERSION = '0.9.0'
3
3
  end
@@ -6,8 +6,9 @@ require 'ruby_event_store/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "ruby_event_store"
8
8
  spec.version = RubyEventStore::VERSION
9
- spec.authors = ["rybex", "mpraglowski"]
10
- spec.email = ["tomek.rybka@gmail.com", "m@praglowski.com"]
9
+ spec.licenses = ['MIT']
10
+ spec.authors = ['Arkency']
11
+ spec.email = ['dev@arkency.com']
11
12
 
12
13
  spec.summary = %q{Event Store in Ruby}
13
14
  spec.description = %q{Implementation of Event Store in Ruby}
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_event_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
- - rybex
8
- - mpraglowski
7
+ - Arkency
9
8
  autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2016-06-21 00:00:00.000000000 Z
11
+ date: 2016-06-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
@@ -83,8 +82,7 @@ dependencies:
83
82
  version: 0.7.9
84
83
  description: Implementation of Event Store in Ruby
85
84
  email:
86
- - tomek.rybka@gmail.com
87
- - m@praglowski.com
85
+ - dev@arkency.com
88
86
  executables: []
89
87
  extensions: []
90
88
  extra_rdoc_files: []
@@ -94,6 +92,7 @@ files:
94
92
  - CHANGELOG.md
95
93
  - CONTRIBUTING.md
96
94
  - Gemfile
95
+ - LICENSE
97
96
  - Makefile
98
97
  - README.md
99
98
  - Rakefile
@@ -110,7 +109,8 @@ files:
110
109
  - lib/ruby_event_store/version.rb
111
110
  - ruby_event_store.gemspec
112
111
  homepage: https://github.com/arkency/ruby_event_store
113
- licenses: []
112
+ licenses:
113
+ - MIT
114
114
  metadata: {}
115
115
  post_install_message:
116
116
  rdoc_options: []