Skip to content
Browse files

Merge pull request #7338 from sax/master

Evented notifications should take priority over Timed
  • Loading branch information...
2 parents bf646b3 + 6fe36ba commit 1ce64095e418f19f0792fa84156430921cb6c1f1 @tenderlove tenderlove committed Aug 12, 2012
View
6 activesupport/lib/active_support/notifications/fanout.rb
@@ -59,10 +59,10 @@ def wait
module Subscribers # :nodoc:
def self.new(pattern, listener)
- if listener.respond_to?(:call)
- subscriber = Timed.new pattern, listener
- else
+ if listener.respond_to?(:start) and listener.respond_to?(:finish)
subscriber = Evented.new pattern, listener
+ else
+ subscriber = Timed.new pattern, listener
end
unless pattern
View
20 activesupport/test/notifications/evented_notification_test.rb
@@ -19,6 +19,12 @@ def finish(name, id, payload)
end
end
+ class ListenerWithTimedSupport < Listener
+ def call(name, start, finish, id, payload)
+ @events << [:call, name, start, finish, id, payload]
+ end
+ end
+
def test_evented_listener
notifier = Fanout.new
listener = Listener.new
@@ -62,6 +68,20 @@ def test_listen_to_everything
[:finish, 'hello', 1, {}],
], listener.events
end
+
+ def test_evented_listener_priority
+ notifier = Fanout.new
+ listener = ListenerWithTimedSupport.new
+ notifier.subscribe 'hi', listener
+
+ notifier.start 'hi', 1, {}
+ notifier.finish 'hi', 1, {}
+
+ assert_equal [
+ [:start, 'hi', 1, {}],
+ [:finish, 'hi', 1, {}]
+ ], listener.events
+ end
end
end
end

0 comments on commit 1ce6409

Please sign in to comment.
Something went wrong with that request. Please try again.