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 9
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 35
def finish(name, payload)
  @notifier.finish name, @id, payload
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 17
def instrument(name, payload={})
  start name, payload
  begin
    yield payload
  rescue Exception => e
    payload[:exception] = [e.class.name, e.message]
    raise e
  ensure
    finish 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 30
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 41
def unique_id
  SecureRandom.hex(10)
end