Sha256: bd93b3aba22df19181e6a108a57c1c3ad4c1f4234e4b58a48f7a2c540f37c603

Contents?: true

Size: 740 Bytes

Versions: 17

Compression:

Stored size: 740 Bytes

Contents

# frozen_string_literal: true

module Racecar
  ##
  # Common API for instrumentation to standardize
  # namespace and default payload
  #
  class Instrumenter
    NAMESPACE = "racecar"
    attr_reader :backend

    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

    def instrument(event_name, payload = {}, &block)
      @backend.instrument("#{event_name}.#{NAMESPACE}", @default_payload.merge(payload), &block)
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
racecar-2.8.2 lib/racecar/instrumenter.rb
racecar-2.8.2.beta lib/racecar/instrumenter.rb
racecar-2.8.1 lib/racecar/instrumenter.rb
racecar-2.8.0.rc.1 lib/racecar/instrumenter.rb
racecar-2.8.0.beta.2 lib/racecar/instrumenter.rb
racecar-2.8.0.beta.1 lib/racecar/instrumenter.rb
racecar-2.7.0 lib/racecar/instrumenter.rb
racecar-2.7.0.beta1 lib/racecar/instrumenter.rb
racecar-2.6.0 lib/racecar/instrumenter.rb
racecar-2.5.0 lib/racecar/instrumenter.rb
racecar-2.4.0 lib/racecar/instrumenter.rb
racecar-2.3.1 lib/racecar/instrumenter.rb
racecar-2.3.0 lib/racecar/instrumenter.rb
racecar-2.3.0.alpha1 lib/racecar/instrumenter.rb
racecar-2.2.0 lib/racecar/instrumenter.rb
racecar-2.1.1 lib/racecar/instrumenter.rb
racecar-2.1.0 lib/racecar/instrumenter.rb