Sha256: f26cc778197a7a86470028f5f35253f14541887e28432f5c2630f4bfa34d4750

Contents?: true

Size: 1.19 KB

Versions: 12

Compression:

Stored size: 1.19 KB

Contents

module Logtail
  module Integrations
    module Rails
      # @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
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
logtail-rails-0.2.3 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.2.2 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.2.1 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.1.8 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.1.7 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.1.6 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.1.5 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.1.4 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.1.3 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.1.2 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.1.1 lib/logtail-rails/active_support_log_subscriber.rb
logtail-rails-0.1.0 lib/logtail-rails/active_support_log_subscriber.rb