Module: Rails::Instrumentation::Subscriber::ClassMethods

Defined in:
lib/rails/instrumentation/subscriber.rb

Instance Method Summary collapse

Instance Method Details

#subscribe(exclude_events: []) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rails/instrumentation/subscriber.rb', line 9

def subscribe(exclude_events: [])
  @subscriber_mutex = Mutex.new if @subscriber_mutex.nil?

  # clear
  unsubscribe
  @subscribers = []

  @subscriber_mutex.synchronize do
    self::EVENTS.each do |event_name|
      full_name = "#{event_name}.#{self::EVENT_NAMESPACE}"

      next if exclude_events.include? full_name

      @subscribers << Utils.register_subscriber(full_name: full_name,
                                                event_name: event_name,
                                                handler_module: self)
    end
  end
end

#unsubscribeObject



29
30
31
32
33
34
35
36
37
# File 'lib/rails/instrumentation/subscriber.rb', line 29

def unsubscribe
  return if @subscribers.nil? || @subscriber_mutex.nil?

  @subscriber_mutex.synchronize do
    @subscribers.each do |subscriber|
      ::ActiveSupport::Notifications.unsubscribe(subscriber)
    end
  end
end