class ActiveSupport::Notifications::Instrumenter

Attributes

id[R]

Public Class Methods

new(notifier) click to toggle source
# File lib/active_support/notifications/instrumenter.rb, line 8
def initialize(notifier)
  @id = unique_id
  @notifier = notifier
end

Public Instance Methods

instrument(name, 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 16
def instrument(name, payload={})
  started = Time.now

  begin
    yield
  rescue Exception => e
    payload[:exception] = [e.class.name, e.message]
    raise e
  ensure
    @notifier.publish(name, started, Time.now, @id, payload)
  end
end