class StatsD::Instrument::Environment

The environment module is used to detect, and initialize the environment in which this library is active. It will use different default values based on the environment.

Attributes

env[R]

Public Class Methods

current() click to toggle source
# File lib/statsd/instrument/environment.rb, line 7
def current
  @current ||= StatsD::Instrument::Environment.new(ENV)
end
default_backend() click to toggle source

Instantiates a default backend for the current environment.

@return [StatsD::Instrument::Backend] @see environment

# File lib/statsd/instrument/environment.rb, line 26
def default_backend
  case environment
  when 'production', 'staging'
    StatsD::Instrument::Backends::UDPBackend.new(current.statsd_addr, current.statsd_implementation)
  when 'test'
    StatsD::Instrument::Backends::NullBackend.new
  else
    StatsD::Instrument::Backends::LoggerBackend.new(StatsD.logger)
  end
end
environment() click to toggle source

Detects the current environment, either by asking Rails, or by inspecting environment variables.

  • Within a Rails application, Rails.env is used.

  • It will check the following environment variables in order: RAILS_ENV, RACK_ENV, ENV.

  • If none of these are set, it will return development

@return [String] The detected environment.

# File lib/statsd/instrument/environment.rb, line 18
def environment
  current.environment
end
new(env) click to toggle source
# File lib/statsd/instrument/environment.rb, line 57
def initialize(env)
  @env = env
end
setup() click to toggle source

Sets default values for sample rate and logger.

  • Default sample rate is set to the value in the STATSD_SAMPLE_RATE environment variable, or 1.0 otherwise. See {StatsD#default_sample_rate}

  • {StatsD#logger} is set to a logger that send output to stderr.

If you are including this library inside a Rails environment, additional initialization will be done as part of the {StatsD::Instrument::Railtie}.

@return [void]

# File lib/statsd/instrument/environment.rb, line 47
def setup
  StatsD.prefix = current.statsd_prefix
  StatsD.default_tags = current.statsd_default_tags
  StatsD.default_sample_rate = current.statsd_sample_rate
  StatsD.logger = Logger.new($stderr)
end

Public Instance Methods

client() click to toggle source
# File lib/statsd/instrument/environment.rb, line 98
def client
  if env.key?('STATSD_USE_NEW_CLIENT')
    StatsD::Instrument::Client.from_env(self)
  else
    StatsD::Instrument::LegacyClient.singleton
  end
end
default_sink_for_environment() click to toggle source
# File lib/statsd/instrument/environment.rb, line 106
def default_sink_for_environment
  case environment
  when 'production', 'staging'
    StatsD::Instrument::UDPSink.for_addr(statsd_addr)
  when 'test'
    StatsD::Instrument::NullSink.new
  else
    StatsD::Instrument::LogSink.new(StatsD.logger)
  end
end
environment() click to toggle source

Detects the current environment, either by asking Rails, or by inspecting environment variables.

  • Within a Rails application, Rails.env is used.

  • It will check the following environment variables in order: RAILS_ENV, RACK_ENV, ENV.

  • If none of these are set, it will return development

@return [String] The detected environment.

# File lib/statsd/instrument/environment.rb, line 68
def environment
  if env['STATSD_ENV']
    env['STATSD_ENV']
  elsif defined?(Rails) && Rails.respond_to?(:env)
    Rails.env.to_s
  else
    env['RAILS_ENV'] || env['RACK_ENV'] || env['ENV'] || 'development'
  end
end
statsd_addr() click to toggle source
# File lib/statsd/instrument/environment.rb, line 90
def statsd_addr
  env.fetch('STATSD_ADDR', 'localhost:8125')
end
statsd_default_tags() click to toggle source
# File lib/statsd/instrument/environment.rb, line 94
def statsd_default_tags
  env.key?('STATSD_DEFAULT_TAGS') ? env.fetch('STATSD_DEFAULT_TAGS').split(',') : nil
end
statsd_implementation() click to toggle source
# File lib/statsd/instrument/environment.rb, line 78
def statsd_implementation
  env.fetch('STATSD_IMPLEMENTATION', 'datadog')
end
statsd_prefix() click to toggle source
# File lib/statsd/instrument/environment.rb, line 86
def statsd_prefix
  env.fetch('STATSD_PREFIX', nil)
end
statsd_sample_rate() click to toggle source
# File lib/statsd/instrument/environment.rb, line 82
def statsd_sample_rate
  env.fetch('STATSD_SAMPLE_RATE', 1.0).to_f
end