class ActiveSupport::Notifications::Instrumenter - activesupport-4.2.4 Documentation

# 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