Class: NotificationTracer::Subscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/notification_tracer/subscriber.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pattern:, callback:, cleaner: nil) ⇒ Subscriber

Returns a new instance of Subscriber.



5
6
7
8
9
# File 'lib/notification_tracer/subscriber.rb', line 5

def initialize(pattern:, callback:, cleaner: nil)
  @pattern  = pattern.freeze
  @callback = callback
  @cleaner  = setup_cleaner(cleaner)
end

Instance Attribute Details

#cleanerObject (readonly)

Returns the value of attribute cleaner.



3
4
5
# File 'lib/notification_tracer/subscriber.rb', line 3

def cleaner
  @cleaner
end

#patternObject (readonly)

Returns the value of attribute pattern.



3
4
5
# File 'lib/notification_tracer/subscriber.rb', line 3

def pattern
  @pattern
end

Instance Method Details

#subscribe(silent: false) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/notification_tracer/subscriber.rb', line 15

def subscribe(silent: false)
  @real_subscriber = nil if real_subscriber && !listening?
  @real_subscriber ||= notifier.subscribe(pattern) do |*args|
    event = ActiveSupport::Notifications::Event.new(*args)
    trace(event: event, stack: caller)
  end
  subscription_error('subscribe') if !silent && !subscribed?
  self
end

#subscribed?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/notification_tracer/subscriber.rb', line 11

def subscribed?
  !!real_subscriber && listening?
end

#unsubscribe(silent: false) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/notification_tracer/subscriber.rb', line 25

def unsubscribe(silent: false)
  if real_subscriber
    notifier.unsubscribe(real_subscriber)
    if listening?
      subscription_error('unsubscribe') if !silent
    else
      @real_subscriber = nil
    end
  end
  self
end