Skip to content

Commit 20dd543

Browse files
lukaszreszkefidel
authored andcommitted
Simplify dispatcher
All we need is subscriber responding to `call` method. Therefore, passing class is not allowed anymore. It either has to be class instance or something that evaluates to class instance.
1 parent 5c29378 commit 20dd543

File tree

2 files changed

+3
-10
lines changed

2 files changed

+3
-10
lines changed

ruby_event_store/lib/ruby_event_store/dispatcher.rb

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,11 @@
33
module RubyEventStore
44
class Dispatcher
55
def call(subscriber, event, _)
6-
subscriber = subscriber.new if Class === subscriber
76
subscriber.call(event)
87
end
98

109
def verify(subscriber)
11-
begin
12-
subscriber_instance = Class === subscriber ? subscriber.new : subscriber
13-
rescue ArgumentError
14-
false
15-
else
16-
subscriber_instance.respond_to?(:call)
17-
end
10+
subscriber.respond_to?(:call)
1811
end
1912
end
2013
end

ruby_event_store/spec/dispatcher_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ def call; end
3838
specify "calls subscribed class" do
3939
expect(HandlerClass).to receive(:new).and_return(handler)
4040
expect(handler).to receive(:call).with(event)
41-
Dispatcher.new.call(HandlerClass, event, record)
41+
Dispatcher.new.call(-> (event) { HandlerClass.new.call(event) }, event, record)
4242
end
4343

4444
specify "allows callable classes and instances" do
45-
expect(Dispatcher.new.verify(HandlerClass)).to eq(true)
45+
expect(Dispatcher.new.verify(-> { HandlerClass.new })).to eq(true)
4646
expect(Dispatcher.new.verify(HandlerClass.new)).to eq(true)
4747
expect(Dispatcher.new.verify(Proc.new { "yo" })).to eq(true)
4848
end

0 commit comments

Comments
 (0)