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 37
def finish(name, payload)
  @notifier.finish name, @id, payload
end

Send a finish notification with name and payload.

finish_with_state(listeners_state, name, payload) Show source
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 41
def finish_with_state(listeners_state, name, payload)
  @notifier.finish name, @id, payload, listeners_state
end
instrument(name, payload={}) { |payload| ... } Show source
# File activesupport/lib/active_support/notifications/instrumenter.rb, line 17
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

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 32
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.