class SimpleEvents::Notifier

Attributes

runaway_threshold[RW]

Public Class Methods

logger() click to toggle source
# File lib/simple_events/notifier.rb, line 44
def self.logger
  @@logger ||= ::Logger.new($stdout)
end
logger=(new_logger) click to toggle source
# File lib/simple_events/notifier.rb, line 48
def self.logger=(new_logger)
  @@logger = new_logger
end
new() click to toggle source
# File lib/simple_events/notifier.rb, line 10
def initialize
  @events = {}
  @runaway_threshold = 100
end

Public Instance Methods

check_for_runaway_subscriptions(event) click to toggle source
# File lib/simple_events/notifier.rb, line 21
def check_for_runaway_subscriptions(event)
  count = @events[event].size
  logger.debug("Run-away event subscription on #{event}? Subscribed #{count}") if count > @runaway_threshold
end
clear() click to toggle source
# File lib/simple_events/notifier.rb, line 26
def clear
  @events.clear
end
logger() click to toggle source
# File lib/simple_events/notifier.rb, line 52
def logger
  self.class.logger
end
logger=(new_logger) click to toggle source
# File lib/simple_events/notifier.rb, line 56
def logger=(new_logger)
  self.class.logger = new_logger
end
notify(event, *args) click to toggle source
# File lib/simple_events/notifier.rb, line 30
def notify(event, *args)
  return unless @events.has_key?(event)

  @events[event].each do |handler|
    begin
      handler.call(*args)
    rescue => err
      logger.debug("Failure during notify for #{@event}\n#{err.class} #{err.message}")
    end
  end
end
subscribe(event, &handler) click to toggle source
# File lib/simple_events/notifier.rb, line 15
def subscribe(event, &handler)
  @events[event] ||= []
  @events[event] << handler
  check_for_runaway_subscriptions(event)
end