Module: Julewire::RailsSupport::EventReporter

Defined in:
lib/julewire/rails_support/event_reporter.rb

Class Method Summary collapse

Class Method Details

.defaultObject



7
8
9
10
11
12
13
14
15
# File 'lib/julewire/rails_support/event_reporter.rb', line 7

def default
  rails = top_level_constant(:Rails)
  return rails.event if rails.respond_to?(:event)

  active_support = top_level_constant(:ActiveSupport)
  return unless active_support.respond_to?(:event_reporter)

  active_support.event_reporter
end

.subscribable?(reporter) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/julewire/rails_support/event_reporter.rb', line 24

def subscribable?(reporter)
  reporter.respond_to?(:subscribe)
end

.subscribe(reporter, subscriber) ⇒ Object



17
18
19
20
21
22
# File 'lib/julewire/rails_support/event_reporter.rb', line 17

def subscribe(reporter, subscriber, &)
  return unless subscribable?(reporter)

  reporter.subscribe(subscriber, &)
  unsubscriber(reporter, subscriber)
end

.unsubscribe_log_subscriber(subscriber_class, reporter: default) ⇒ Object



32
33
34
35
36
37
# File 'lib/julewire/rails_support/event_reporter.rb', line 32

def unsubscribe_log_subscriber(subscriber_class, reporter: default)
  return unless reporter.respond_to?(:unsubscribe)
  return unless log_subscriber?(subscriber_class)

  reporter.unsubscribe(subscriber_class)
end

.unsubscriber(reporter, subscriber) ⇒ Object



28
29
30
# File 'lib/julewire/rails_support/event_reporter.rb', line 28

def unsubscriber(reporter, subscriber)
  -> { reporter.unsubscribe(subscriber) if reporter.respond_to?(:unsubscribe) }
end