Module: Loggerator::Railtie::Helper
Instance Method Summary collapse
- #detach_existing_subscribers ⇒ Object
- #events_for_subscriber(subscriber) ⇒ Object
- #setup(_app) ⇒ Object
- #subscribe? ⇒ Boolean
- #unsubscribe(component, subscriber) ⇒ Object
Instance Method Details
#detach_existing_subscribers ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/loggerator/railtie/helper.rb', line 15 def detach_existing_subscribers ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber| case subscriber when ActionView::LogSubscriber unsubscribe(:action_view, subscriber) when ActionController::LogSubscriber unsubscribe(:action_controller, subscriber) end end end |
#events_for_subscriber(subscriber) ⇒ Object
43 44 45 |
# File 'lib/loggerator/railtie/helper.rb', line 43 def events_for_subscriber(subscriber) subscriber.public_methods(false).reject {|method| method.to_s == 'call' } end |
#setup(_app) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/loggerator/railtie/helper.rb', line 8 def setup(_app) return unless subscribe? detach_existing_subscribers Loggerator::Railtie::LogSubscriber.attach_to(:action_controller) end |
#subscribe? ⇒ Boolean
26 27 28 |
# File 'lib/loggerator/railtie/helper.rb', line 26 def subscribe? !Loggerator.config.rails_default_subscribers end |
#unsubscribe(component, subscriber) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/loggerator/railtie/helper.rb', line 30 def unsubscribe(component, subscriber) events = events_for_subscriber(subscriber) events.each do |event| notifier = ActiveSupport::Notifications.notifier notifier.listeners_for("#{event}.#{component}").each do |listener| if listener.instance_variable_get('@delegate') == subscriber ActiveSupport::Notifications.unsubscribe(listener) end end end end |