class Racecar::Instrumenter

Common API for instrumentation to standardize namespace and default payload

Constants

NAMESPACE

Attributes

backend[R]

Public Class Methods

new(default_payload = {}) click to toggle source
# File lib/racecar/instrumenter.rb, line 12
def initialize(default_payload = {})
  @default_payload = default_payload

  @backend = if defined?(ActiveSupport::Notifications)
    # ActiveSupport needs `concurrent-ruby` but doesn't `require` it.
    require 'concurrent/utility/monotonic_time'
    ActiveSupport::Notifications
  else
    NullInstrumenter
  end
end

Public Instance Methods

instrument(event_name, payload = {}, &block) click to toggle source
# File lib/racecar/instrumenter.rb, line 24
def instrument(event_name, payload = {}, &block)
  @backend.instrument("#{event_name}.#{NAMESPACE}", @default_payload.merge(payload), &block)
end