class ActiveSupport::Notifications::Instrumenter
Instrumenters are stored in a thread local.
Attributes
id[R]
Public Class Methods
new(notifier)
click to toggle source
# File lib/active_support/notifications/instrumenter.rb, line 10 def initialize(notifier) @id = unique_id @notifier = notifier end
Public Instance Methods
finish(name, payload)
click to toggle source
Send a finish notification with name
and payload
.
# File lib/active_support/notifications/instrumenter.rb, line 38 def finish(name, payload) @notifier.finish name, @id, payload end
finish_with_state(listeners_state, name, payload)
click to toggle source
# File lib/active_support/notifications/instrumenter.rb, line 42 def finish_with_state(listeners_state, name, payload) @notifier.finish name, @id, payload, listeners_state end
instrument(name, payload = {}) { |payload| ... }
click to toggle source
Instrument the given block by measuring the time taken to execute it and publish it. Notice that events get sent even if an error occurs in the passed-in block.
# File lib/active_support/notifications/instrumenter.rb, line 18 def instrument(name, payload = {}) # some of the listeners might have state listeners_state = start name, payload begin yield payload rescue Exception => e payload[:exception] = [e.class.name, e.message] payload[:exception_object] = e raise e ensure finish_with_state listeners_state, name, payload end end
start(name, payload)
click to toggle source
Send a start notification with name
and payload
.
# File lib/active_support/notifications/instrumenter.rb, line 33 def start(name, payload) @notifier.start name, @id, payload end
Private Instance Methods
unique_id()
click to toggle source
# File lib/active_support/notifications/instrumenter.rb, line 48 def unique_id SecureRandom.hex(10) end