# 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