Class: LcpRuby::Metrics::Subscriber

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

Class Method Summary collapse

Class Method Details

.activate!Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/lcp_ruby/metrics/subscriber.rb', line 5

def activate!
  @subscriptions = []

  # request.lcp_ruby needs Event object for duration
  @subscriptions << ActiveSupport::Notifications.subscribe("request.lcp_ruby") do |*args|
    event = ActiveSupport::Notifications::Event.new(*args)
    handle_request(event)
  end

  # Other handlers only need payload — avoid Event allocation
  @subscriptions << ActiveSupport::Notifications.subscribe("error.lcp_ruby") do |*, payload|
    handle_error(payload)
  end

  @subscriptions << ActiveSupport::Notifications.subscribe("cache.lcp_ruby") do |*, payload|
    handle_cache(payload)
  end

  @subscriptions << ActiveSupport::Notifications.subscribe("workflow_transition.lcp_ruby") do |*, payload|
    handle_workflow_transition(payload)
  end

  @subscriptions << ActiveSupport::Notifications.subscribe("permission.lcp_ruby") do |*, payload|
    handle_permission(payload)
  end

  @subscriptions << ActiveSupport::Notifications.subscribe("boot.lcp_ruby") do |*, payload|
    handle_boot(payload)
  end
end

.clear!Object



36
37
38
39
40
41
# File 'lib/lcp_ruby/metrics/subscriber.rb', line 36

def clear!
  (@subscriptions || []).each do |sub|
    ActiveSupport::Notifications.unsubscribe(sub)
  end
  @subscriptions = []
end