class ActiveSupport::Notifications::Fanout
It just pushes events to all registered log subscribers.
This is a default queue implementation that ships with Notifications.
def initialize
def initialize @subscribers = [] @listeners_for = {} end
def listeners_for(name)
def listeners_for(name) @listeners_for[name] ||= @subscribers.select { |s| s.subscribed_to?(name) } end
def listening?(name)
def listening?(name) listeners_for(name).any? end
def publish(name, *args)
def publish(name, *args) listeners_for(name).each { |s| s.publish(name, *args) } end
def subscribe(pattern = nil, block = Proc.new)
def subscribe(pattern = nil, block = Proc.new) subscriber = Subscriber.new(pattern, block).tap do |s| @subscribers << s end @listeners_for.clear subscriber end
def unsubscribe(subscriber)
def unsubscribe(subscriber) @subscribers.reject! {|s| s.matches?(subscriber)} @listeners_for.clear end
def wait
def wait end