module ActiveSupport::Notifications::Fanout::Subscribers
def self.event_object_subscriber(pattern, block)
def self.event_object_subscriber(pattern, block) wrap_all pattern, EventObject.new(pattern, block) end
def self.new(pattern, listener)
def self.new(pattern, listener) subscriber_class = Timed if listener.respond_to?(:start) && listener.respond_to?(:finish) subscriber_class = Evented else # Doing all this to detect a block like `proc { |x| }` vs # `proc { |*x| }` or `proc { |**x| }` if listener.respond_to?(:parameters) params = listener.parameters if params.length == 1 && params.first.first == :opt subscriber_class = EventObject end end end wrap_all pattern, subscriber_class.new(pattern, listener) end
def self.wrap_all(pattern, subscriber)
def self.wrap_all(pattern, subscriber) unless pattern AllMessages.new(subscriber) else subscriber end end