module CanCan::PubSub

Public Instance Methods

subscribe(event, target = nil, &block) click to toggle source
# File lib/cancan/pub_sub.rb, line 7
def subscribe(event, target = nil, &block)
  events[event] ||= []
  if target
    events[event] << target
  elsif block
    events[event] << block
  else
    raise ArgumentError
  end
  self
end

Private Instance Methods

events() click to toggle source
# File lib/cancan/pub_sub.rb, line 21
def events
  @events ||= {}.with_indifferent_access
end
publish(event) click to toggle source
# File lib/cancan/pub_sub.rb, line 25
def publish(event)
  return if events[event].nil?

  events[event].each do |handler|
    if handler.is_a? Symbol
      send(handler, event, self)
    else
      handler.call(event, self)
    end
  end
end