class NewRelic::Agent::Configuration::DefaultSource
Constants
- BOOLEAN_MAP
- DEFAULT_LOG_DIR
- SEMICOLON
Attributes
defaults[R]
Public Class Methods
agent_enabled()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 158 def self.agent_enabled proc { NewRelic::Agent.config[:enabled] && (NewRelic::Agent.config[:test_mode] || NewRelic::Agent.config[:monitor_mode]) && NewRelic::Agent::Autostart.agent_should_start? } end
allowlist_for(key)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 72 def self.allowlist_for(key) value_from_defaults(key, :allowlist) end
api_host()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 216 def self.api_host # only used for deployment task proc do api_version = if NewRelic::Agent.config[:api_key].nil? || NewRelic::Agent.config[:api_key].empty? 'rpm' else 'api' end api_region = 'eu.' if String(NewRelic::Agent.config[:license_key]).start_with?('eu') "#{api_version}.#{api_region}newrelic.com" end end
app_name()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 178 def self.app_name proc { NewRelic::Control.instance.env } end
audit_log_path()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 168 def self.audit_log_path proc { log_file_path = NewRelic::Agent.config[:log_file_path] wants_stdout = (log_file_path.casecmp(NewRelic::STANDARD_OUT) == 0) audit_log_dir = wants_stdout ? DEFAULT_LOG_DIR : log_file_path File.join(audit_log_dir, 'newrelic_audit.log') } end
boolean_for(key, value)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 76 def self.boolean_for(key, value) string_value = (value.respond_to?(:call) ? value.call : value).to_s BOOLEAN_MAP.fetch(string_value, nil) end
config_path()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 125 def self.config_path proc { found_path = NewRelic::Agent.config[:config_search_paths].detect do |file| File.expand_path(file) if File.exist?(file) end found_path || NewRelic::EMPTY_STR } end
config_search_paths()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 90 def self.config_search_paths proc { yaml = 'newrelic.yml' config_yaml = File.join('config', yaml) erb = 'newrelic.yml.erb' config_erb = File.join('config', erb) paths = [config_yaml, yaml, config_erb, erb] if NewRelic::Control.instance.root paths << File.join(NewRelic::Control.instance.root, config_yaml) paths << File.join(NewRelic::Control.instance.root, yaml) paths << File.join(NewRelic::Control.instance.root, config_erb) paths << File.join(NewRelic::Control.instance.root, erb) end if ENV['HOME'] paths << File.join(ENV['HOME'], '.newrelic', yaml) paths << File.join(ENV['HOME'], yaml) paths << File.join(ENV['HOME'], '.newrelic', erb) paths << File.join(ENV['HOME'], erb) end # If we're packaged for warbler, we can tell from GEM_HOME # the following line needs else branch coverage if ENV['GEM_HOME'] && ENV['GEM_HOME'].end_with?('.jar!') # rubocop:disable Style/SafeNavigation app_name = File.basename(ENV['GEM_HOME'], '.jar!') paths << File.join(ENV['GEM_HOME'], app_name, config_yaml) paths << File.join(ENV['GEM_HOME'], app_name, config_erb) end paths } end
convert_to_constant_list(raw_value)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 273 def self.convert_to_constant_list(raw_value) return NewRelic::EMPTY_ARRAY if raw_value.nil? || raw_value.empty? constants = convert_to_list(raw_value).map! do |class_name| const = ::NewRelic::LanguageSupport.constantize(class_name) NewRelic::Agent.logger.warn("Ignoring invalid constant '#{class_name}' in #{raw_value}") unless const const end constants.compact! constants end
convert_to_hash(value)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 248 def self.convert_to_hash(value) return value if value.is_a?(Hash) if value.is_a?(String) return value.split(',').each_with_object({}) do |item, hash| key, value = item.split('=') hash[key] = value end end raise ArgumentError.new( "Config value '#{value}' of " \ "class #{value.class} couldn't be turned into a Hash." ) end
convert_to_list(value)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 237 def self.convert_to_list(value) case value when String value.split(/\s*,\s*/) when Array value else raise ArgumentError.new("Config value '#{value}' couldn't be turned into a list.") end end
convert_to_list_on_semicolon(value)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 265 def self.convert_to_list_on_semicolon(value) case value when Array then value when String then value.split(SEMICOLON) else NewRelic::EMPTY_ARRAY end end
convert_to_regexp_list(raw_value)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 230 def self.convert_to_regexp_list(raw_value) value_list = convert_to_list(raw_value) value_list.map do |value| /#{value}/ end end
default_for(key)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 82 def self.default_for(key) value_from_defaults(key, :default) end
default_settings(key)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 64 def self.default_settings(key) ::NewRelic::Agent::Configuration::DEFAULTS[key] end
dispatcher()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 182 def self.dispatcher proc { NewRelic::Control.instance.local_env.discovered_dispatcher } end
enforce_fallback(allowed_values: nil, fallback: nil)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 285 def self.enforce_fallback(allowed_values: nil, fallback: nil) proc do |configured_value| if allowed_values.any? { |v| v =~ /#{configured_value}/i } configured_value else fallback end end end
framework()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 134 def self.framework proc { case when defined?(::NewRelic::TEST) then :test when defined?(::Rails::VERSION) case Rails::VERSION::MAJOR when 3 :rails3 when 4..7 :rails_notifications else ::NewRelic::Agent.logger.warn("Detected untested Rails version #{Rails::VERSION::STRING}") :rails_notifications end when defined?(::Padrino) && defined?(::Padrino::PathRouter::Router) then :padrino when defined?(::Sinatra) && defined?(::Sinatra::Base) then :sinatra when defined?(::Roda) then :roda when defined?(::Grape) then :grape when defined?(::NewRelic::IA) then :external else :ruby end } end
host()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 205 def self.host proc do regex = /\A(?<identifier>.+?)x/ if matches = regex.match(String(NewRelic::Agent.config[:license_key])) "collector.#{matches['identifier']}.nr-data.net" else 'collector.newrelic.com' end end end
new()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 52 def initialize @defaults = default_values end
profiling_available()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 194 def self.profiling_available proc { begin require 'ruby-prof' true rescue LoadError false end } end
thread_profiler_enabled()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 186 def self.thread_profiler_enabled proc { NewRelic::Agent::Threading::BacktraceService.is_supported? } end
transaction_tracer_transaction_threshold()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 190 def self.transaction_tracer_transaction_threshold proc { NewRelic::Agent.config[:apdex_t] * 4 } end
transform_for(key)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 86 def self.transform_for(key) value_from_defaults(key, :transform) end
value_from_defaults(key, subkey)
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 68 def self.value_from_defaults(key, subkey) default_settings(key)&.send(:[], subkey) end
Public Instance Methods
default_values()
click to toggle source
# File lib/new_relic/agent/configuration/default_source.rb, line 56 def default_values result = {} ::NewRelic::Agent::Configuration::DEFAULTS.each do |key, value| result[key] = value[:default] end result end