Module: Logged::Subscriptions
- Included in:
- Logged
- Defined in:
- lib/logged/subscriptions.rb
Overview
Railtie for logged
Instance Method Summary collapse
-
#rails_subscriber(component) ⇒ Object
try to guess and get rails log subscriber by component name.
-
#register(component, subscriber) ⇒ Object
register log subscriber with logged.
-
#remove_rails_subscriber(component) ⇒ Object
remove rails log subscriber by component name.
-
#require_rails_subscribers ⇒ Object
require log subscribers for rails frameworks.
-
#unsubscribe(component, subscriber) ⇒ Object
unsubscribe a subscriber from a component.
Instance Method Details
#rails_subscriber(component) ⇒ Object
try to guess and get rails log subscriber by component name
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/logged/subscriptions.rb', line 14 def rails_subscriber(component) class_name = "::#{component.to_s.camelize}::LogSubscriber" return unless Object.const_defined?(class_name) clazz = class_name.constantize ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber| return subscriber if subscriber.is_a?(clazz) end nil end |
#register(component, subscriber) ⇒ Object
register log subscriber with logged
42 43 44 45 46 |
# File 'lib/logged/subscriptions.rb', line 42 def register(component, subscriber) return if @subscribers[component].include?(subscriber) @subscribers[component] << subscriber end |
#remove_rails_subscriber(component) ⇒ Object
remove rails log subscriber by component name
5 6 7 8 9 10 11 |
# File 'lib/logged/subscriptions.rb', line 5 def remove_rails_subscriber(component) subscriber = rails_subscriber(component) return unless subscriber unsubscribe(component, subscriber) end |
#require_rails_subscribers ⇒ Object
require log subscribers for rails frameworks
49 50 51 52 53 54 |
# File 'lib/logged/subscriptions.rb', line 49 def require_rails_subscribers require 'logged/log_subscriber/action_controller' if defined?(ActionController) require 'logged/log_subscriber/action_view' if defined?(ActionView) require 'logged/log_subscriber/active_record' if defined?(ActiveRecord) require 'logged/log_subscriber/action_mailer' if defined?(ActionMailer) end |
#unsubscribe(component, subscriber) ⇒ Object
unsubscribe a subscriber from a component
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/logged/subscriptions.rb', line 29 def unsubscribe(component, subscriber) 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 |