module LogSanity::Extensions::ActiveSupportSubscriber::ClassMethods

Public Instance Methods

detach_from(namespace, notifier=ActiveSupport::Notifications) click to toggle source
# File lib/log_sanity/extensions/active_support_subscriber.rb, line 7
def detach_from(namespace, notifier=ActiveSupport::Notifications)
  subscribers.select{|s| s.is_a? self}.each do |subscriber|
    subscriber.public_methods(false).each do |event|
      pattern = "#{event}.#{namespace}"
      notifier.notifier.listeners_for(pattern).each do |listener|
        if listener.instance_variable_get(:@delegate) == subscriber
          notifier.unsubscribe listener
          subscriber.patterns.delete pattern
        end
      end
    end
    subscribers.delete subscriber if subscriber.patterns.empty?
  end
end