Sha256: 7cc0c0fdcdc0b80e301a89438b8197d6de42e86ce9fef7c70b02a83ad8681383

Contents?: true

Size: 1.54 KB

Versions: 3

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true

require 'ddtrace'

require 'instrument_all_the_things/version'

require_relative './instrument_all_the_things/helpers'
require_relative './instrument_all_the_things/clients/stat_reporter/datadog'

module InstrumentAllTheThings
  class Error < StandardError; end

  class << self
    attr_accessor :stat_namespace
    attr_writer :logger, :stat_reporter, :tracer

    def logger
      return @logger if defined?(@logger)

      @logger ||= if defined?(Rails)
                    Rails.logger
                  elsif defined?(App) && App.respond_to?(:logger)
                    App.logger
                  else
                    require 'logger'
                    Logger.new(STDOUT)
                  end
    end

    def stat_reporter
      return @stat_reporter if defined?(@stat_reporter)

      @stat_reporter ||= Clients::StatReporter::DataDog.new(
        ENV.fetch('DATADOG_HOST', 'localhost'),
        ENV.fetch('DATADOG_PORT', 8125),
        namespace: stat_namespace
      )
    end

    def tracer
      return @tracer if defined?(@tracer)

      @tracer ||= Datadog.tracer
    end

    %i[
      increment
      decrement
      count
      gauge
      set
      histogram
      distribution
      timing
      time
    ].each do |method_name|
      define_method(method_name) do |*args, **kwargs, &blk|
        return unless stat_reporter

        stat_reporter.public_send(method_name, *args, **kwargs, &blk)
      end
    end
  end

  def self.included(other)
    other.include(Helpers)
  end
end

IATT = InstrumentAllTheThings

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
instrument_all_the_things-1.0.1 lib/instrument_all_the_things.rb
instrument_all_the_things-0.9.1.alpha lib/instrument_all_the_things.rb
instrument_all_the_things-0.9.0.alpha lib/instrument_all_the_things.rb