class NewRelic::Agent::Configuration::EnvironmentSource
Constants
- SPECIAL_CASE_KEYS
- SUPPORTED_PREFIXES
Attributes
alias_map[RW]
type_map[RW]
Public Class Methods
new()
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 18 def initialize set_log_file set_config_file @alias_map = {} @type_map = {} DEFAULTS.each do |config_setting, value| self.type_map[config_setting] = value[:type] set_aliases(config_setting, value) end set_values_from_new_relic_environment_variables end
Public Instance Methods
collect_new_relic_environment_variable_keys()
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 118 def collect_new_relic_environment_variable_keys ENV.keys.select { |key| key.match(SUPPORTED_PREFIXES) } end
convert_environment_key_to_config_key(key)
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 113 def convert_environment_key_to_config_key(key) stripped_key = key.gsub(SUPPORTED_PREFIXES, '').downcase.to_sym self.alias_map[stripped_key] || stripped_key end
serverless?()
click to toggle source
we can’t rely on the :‘serverless_mode.enabled’ config parameter being set yet to signify serverless mode given that we’re in the midst of building the config but we can always rely on the env var being set by the Lambda layer
# File lib/new_relic/agent/configuration/environment_source.rb, line 126 def serverless? NewRelic::Agent::ServerlessHandler.env_var_set? end
set_aliases(config_setting, value)
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 33 def set_aliases(config_setting, value) set_dotted_alias(config_setting) return unless value[:aliases] value[:aliases].each do |config_alias| self.alias_map[config_alias] = config_setting end end
set_config_file()
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 63 def set_config_file self[:config_path] = ENV['NRCONFIG'] if ENV['NRCONFIG'] end
set_dotted_alias(original_config_setting)
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 43 def set_dotted_alias(original_config_setting) config_setting = original_config_setting.to_s if config_setting.include?('.') config_alias = config_setting.tr('.', '_').to_sym self.alias_map[config_alias] = original_config_setting end end
set_key_by_type(config_key, environment_key)
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 82 def set_key_by_type(config_key, environment_key) value = ENV[environment_key] type = self.type_map[config_key] if type == String self[config_key] = value elsif type == Integer self[config_key] = value.to_i elsif type == Float self[config_key] = value.to_f elsif type == Symbol self[config_key] = value.to_sym elsif type == Array self[config_key] = if DEFAULTS[config_key].key?(:transform) DEFAULTS[config_key][:transform].call(value) else value.split(/\s*,\s*/) end elsif type == NewRelic::Agent::Configuration::Boolean if /false|off|no/i.match?(value) self[config_key] = false elsif !value.nil? self[config_key] = true end elsif !serverless? ::NewRelic::Agent.logger.info("#{environment_key} does not have a corresponding configuration setting (#{config_key} does not exist).") ::NewRelic::Agent.logger.info('Run `rake newrelic:config:docs` or visit https://docs.newrelic.com/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration to see a list of available configuration settings.') self[config_key] = value end end
set_log_file()
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 52 def set_log_file if ENV['NEW_RELIC_LOG'] if ENV['NEW_RELIC_LOG'].casecmp(NewRelic::STANDARD_OUT) == 0 self[:log_file_path] = self[:log_file_name] = NewRelic::STANDARD_OUT else self[:log_file_path] = File.dirname(ENV['NEW_RELIC_LOG']) self[:log_file_name] = File.basename(ENV['NEW_RELIC_LOG']) end end end
set_value_from_environment_variable(key)
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 77 def set_value_from_environment_variable(key) config_key = convert_environment_key_to_config_key(key) set_key_by_type(config_key, key) end
set_values_from_new_relic_environment_variables()
click to toggle source
# File lib/new_relic/agent/configuration/environment_source.rb, line 67 def set_values_from_new_relic_environment_variables nr_env_var_keys = collect_new_relic_environment_variable_keys nr_env_var_keys.each do |key| next if SPECIAL_CASE_KEYS.any? { |pattern| pattern === key.upcase } set_value_from_environment_variable(key) end end