Module: ActiveSupport::Notifications::Fanout::Subscribers
- Defined in:
- lib/active_support/notifications/fanout.rb
Overview
:nodoc:
Defined Under Namespace
Classes: EventObject, Evented, Matcher, MonotonicTimed, Timed
Class Method Summary collapse
Class Method Details
.new(pattern, listener, monotonic) ⇒ Object
319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 |
# File 'lib/active_support/notifications/fanout.rb', line 319 def self.new(pattern, listener, monotonic) subscriber_class = monotonic ? MonotonicTimed : Timed if listener.respond_to?(:start) && listener.respond_to?(:finish) subscriber_class = Evented else # Doing this to detect a single argument block or callable # like `proc { |x| }` vs `proc { |*x| }`, `proc { |**x| }`, # or `proc { |x, **y| }` procish = listener.respond_to?(:parameters) ? listener : listener.method(:call) if procish.arity == 1 && procish.parameters.length == 1 subscriber_class = EventObject end end subscriber_class.new(pattern, listener) end |