Sha256: fc5ea4a72cd767a78d385532068a746f81e493b348a7533d72996e31842f523f

Contents?: true

Size: 1.1 KB

Versions: 57

Compression:

Stored size: 1.1 KB

Contents

module Timber
  module Util
    # @private
    module ActiveSupportLogSubscriber
      extend self

      def find(component, type)
        ::ActiveSupport::LogSubscriber.log_subscribers.find do |subscriber|
          subscriber.class == type
        end
      end

      def subscribed?(component, type)
        !find(component, type).nil?
      end

      # I don't know why this has to be so complicated, but it is. This code was taken from
      # lograge :/
      def unsubscribe!(component, type)
        subscriber = find(component, type)

        if !subscriber
          raise "We could not find a log subscriber for #{component.inspect} of type #{type.inspect}"
        end

        events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
        events.each do |event|
          ::ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
            if listener.instance_variable_get('@delegate') == subscriber
              ::ActiveSupport::Notifications.unsubscribe listener
            end
          end
        end
      end
    end
  end
end

Version data entries

57 entries across 57 versions & 1 rubygems

Version Path
timber-2.0.17 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.16 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.15 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.14 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.12 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.11 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.10 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.9 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.8 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.7 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.6 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.5 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.4 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.3 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.2 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.1 lib/timber/util/active_support_log_subscriber.rb
timber-2.0.0 lib/timber/util/active_support_log_subscriber.rb