Class: NewRelic::Agent::Configuration::EnvironmentSource
- Inherits:
-
DottedHash
- Object
- Hash
- DottedHash
- NewRelic::Agent::Configuration::EnvironmentSource
show all
- Defined in:
- lib/new_relic/agent/configuration/environment_source.rb
Constant Summary
collapse
- SUPPORTED_PREFIXES =
/^new_relic_|^newrelic_/i
- SPECIAL_CASE_KEYS =
[
'NEW_RELIC_ENV', 'NEW_RELIC_LOG', /^NEW_RELIC_METADATA_/ ]
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from DottedHash
#inspect, symbolize, #to_hash
Constructor Details
Returns a new instance of EnvironmentSource.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# 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
|
Instance Attribute Details
#alias_map ⇒ Object
16
17
18
|
# File 'lib/new_relic/agent/configuration/environment_source.rb', line 16
def alias_map
@alias_map
end
|
#type_map ⇒ Object
16
17
18
|
# File 'lib/new_relic/agent/configuration/environment_source.rb', line 16
def type_map
@type_map
end
|
Instance Method Details
#collect_new_relic_environment_variable_keys ⇒ Object
114
115
116
|
# File 'lib/new_relic/agent/configuration/environment_source.rb', line 114
def collect_new_relic_environment_variable_keys
ENV.keys.select { |key| key.match(SUPPORTED_PREFIXES) }
end
|
#convert_environment_key_to_config_key(key) ⇒ Object
109
110
111
112
|
# File 'lib/new_relic/agent/configuration/environment_source.rb', line 109
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
|
#set_aliases(config_setting, value) ⇒ Object
33
34
35
36
37
38
39
40
41
|
# 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 ⇒ Object
63
64
65
|
# 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) ⇒ Object
43
44
45
46
47
48
49
50
|
# 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) ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
# 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] = value.split(/\s*,\s*/)
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
else
::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 ⇒ Object
52
53
54
55
56
57
58
59
60
61
|
# 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) ⇒ Object
77
78
79
80
|
# 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 ⇒ Object
67
68
69
70
71
72
73
74
75
|
# 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
|