Sha256: ce41078653e07ccde36436ad24a775f1743f495b06bdd1f8fd9f1e95fefb1750

Contents?: true

Size: 949 Bytes

Versions: 2

Compression:

Stored size: 949 Bytes

Contents

require "logger"

require "racecar/consumer"
require "racecar/consumer_set"
require "racecar/runner"
require "racecar/config"
require "ensure_hash_compact"

module Racecar
  # Ignores all instrumentation events.
  class NullInstrumenter
    def self.instrument(*)
      yield({}) if block_given?
    end
  end

  class Error < StandardError
  end

  class ConfigError < Error
  end

  def self.config
    @config ||= Config.new
  end

  def self.configure
    yield config
  end

  def self.logger
    config.logger
  end

  def self.logger=(logger)
    config.logger = logger
  end

  def self.instrumenter
    require "active_support/notifications"

    ActiveSupport::Notifications
  rescue LoadError
    logger.warn "ActiveSupport::Notifications not available, instrumentation is disabled"

    NullInstrumenter
  end

  def self.run(processor)
    Runner.new(processor, config: config, logger: logger, instrumenter: instrumenter).run
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
racecar-2.0.0.alpha2 lib/racecar.rb
racecar-2.0.0.alpha1 lib/racecar.rb