Sha256: a82aff6756d21202e003a78c03c680fe2914454631fbe7fe5b40d0a63ee72676

Contents?: true

Size: 818 Bytes

Versions: 8

Compression:

Stored size: 818 Bytes

Contents

module LogSanity
  module Extensions
    module ActiveSupportSubscriber
      extend ActiveSupport::Concern

      module ClassMethods
        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
      end

    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
log_sanity-1.3.2 lib/log_sanity/extensions/active_support_subscriber.rb
log_sanity-1.3.1 lib/log_sanity/extensions/active_support_subscriber.rb
log_sanity-1.3.0 lib/log_sanity/extensions/active_support_subscriber.rb
log_sanity-1.2.0 lib/log_sanity/extensions/active_support_subscriber.rb
log_sanity-1.1.1 lib/log_sanity/extensions/active_support_subscriber.rb
log_sanity-1.1.0 lib/log_sanity/extensions/active_support_subscriber.rb
log_sanity-1.0.0 lib/log_sanity/extensions/active_support_subscriber.rb
log_sanity-0.2.5 lib/log_sanity/extensions/active_support_subscriber.rb