Class: NotificationTracer::Subscriber
- Inherits:
-
Object
- Object
- NotificationTracer::Subscriber
- Defined in:
- lib/notification_tracer/subscriber.rb
Instance Attribute Summary collapse
-
#cleaner ⇒ Object
readonly
Returns the value of attribute cleaner.
-
#pattern ⇒ Object
readonly
Returns the value of attribute pattern.
Instance Method Summary collapse
-
#initialize(pattern:, callback:, cleaner: nil) ⇒ Subscriber
constructor
A new instance of Subscriber.
- #subscribe(silent: false) ⇒ Object
- #subscribed? ⇒ Boolean
- #unsubscribe(silent: false) ⇒ Object
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
#cleaner ⇒ Object (readonly)
Returns the value of attribute cleaner.
3 4 5 |
# File 'lib/notification_tracer/subscriber.rb', line 3 def cleaner @cleaner end |
#pattern ⇒ Object (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
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 |