class ActiveSupport::Notifications::Instrumenter

Parent:
Object

Instrumenters are stored in a thread local.

Attributes

id[R]

Public Class Methods

new(notifier) Show source
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 9
def initialize(notifier)
  @id       = unique_id
  @notifier = notifier
end

Public Instance Methods

finish(name, payload) Show source
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 35
def finish(name, payload)
  @notifier.finish name, @id, payload
end

Send a finish notification with name and payload.

instrument(name, payload={}) { |payload| ... } Show source
# File activesupport/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

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.

start(name, payload) Show source
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 30
def start(name, payload)
  @notifier.start name, @id, payload
end

Send a start notification with name and payload.

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.