Class: Appsignal::Config
Constant Summary collapse
- SYSTEM_TMP_DIR =
'/tmp'
- DEFAULT_CONFIG =
{ :debug => false, :ignore_errors => [], :ignore_actions => [], :filter_parameters => [], :send_params => true, :endpoint => 'https://push.appsignal.com', :instrument_net_http => true, :instrument_redis => true, :instrument_sequel => true, :skip_session_data => false, :enable_frontend_error_catching => false, :frontend_error_catching_path => '/appsignal_error_catcher', :enable_allocation_tracking => true, :enable_gc_instrumentation => false, :running_in_container => false, :enable_host_metrics => true, :enable_minutely_probes => false, :hostname => ::Socket.gethostname, :ca_file_path => File.(File.join('../../../resources/cacert.pem'), __FILE__) }.freeze
- ENV_TO_KEY_MAPPING =
{ 'APPSIGNAL_ACTIVE' => :active, 'APPSIGNAL_PUSH_API_KEY' => :push_api_key, 'APPSIGNAL_APP_NAME' => :name, 'APPSIGNAL_PUSH_API_ENDPOINT' => :endpoint, 'APPSIGNAL_FRONTEND_ERROR_CATCHING_PATH' => :frontend_error_catching_path, 'APPSIGNAL_DEBUG' => :debug, 'APPSIGNAL_LOG_PATH' => :log_path, 'APPSIGNAL_INSTRUMENT_NET_HTTP' => :instrument_net_http, 'APPSIGNAL_INSTRUMENT_REDIS' => :instrument_redis, 'APPSIGNAL_INSTRUMENT_SEQUEL' => :instrument_sequel, 'APPSIGNAL_SKIP_SESSION_DATA' => :skip_session_data, 'APPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING' => :enable_frontend_error_catching, 'APPSIGNAL_IGNORE_ERRORS' => :ignore_errors, 'APPSIGNAL_IGNORE_ACTIONS' => :ignore_actions, 'APPSIGNAL_FILTER_PARAMETERS' => :filter_parameters, 'APPSIGNAL_SEND_PARAMS' => :send_params, 'APPSIGNAL_HTTP_PROXY' => :http_proxy, 'APPSIGNAL_ENABLE_ALLOCATION_TRACKING' => :enable_allocation_tracking, 'APPSIGNAL_ENABLE_GC_INSTRUMENTATION' => :enable_gc_instrumentation, 'APPSIGNAL_RUNNING_IN_CONTAINER' => :running_in_container, 'APPSIGNAL_WORKING_DIR_PATH' => :working_dir_path, 'APPSIGNAL_ENABLE_HOST_METRICS' => :enable_host_metrics, 'APPSIGNAL_ENABLE_MINUTELY_PROBES' => :enable_minutely_probes, 'APPSIGNAL_HOSTNAME' => :hostname, 'APPSIGNAL_CA_FILE_PATH' => :ca_file_path }.freeze
Instance Attribute Summary collapse
-
#config_hash ⇒ Object
readonly
Returns the value of attribute config_hash.
-
#env ⇒ Object
readonly
Returns the value of attribute env.
-
#initial_config ⇒ Object
readonly
Returns the value of attribute initial_config.
-
#logger ⇒ Object
Returns the value of attribute logger.
-
#root_path ⇒ Object
readonly
Returns the value of attribute root_path.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #active? ⇒ Boolean
-
#initialize(root_path, env, initial_config = {}, logger = Appsignal.logger) ⇒ Config
constructor
A new instance of Config.
- #log_file_path ⇒ Object
- #valid? ⇒ Boolean
- #write_to_environment ⇒ Object
Constructor Details
#initialize(root_path, env, initial_config = {}, logger = Appsignal.logger) ⇒ Config
Returns a new instance of Config.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/appsignal/config.rb', line 62 def initialize(root_path, env, initial_config={}, logger=Appsignal.logger) @root_path = root_path @env = env.to_s @initial_config = initial_config @logger = logger @valid = false # Initial config @config_hash = DEFAULT_CONFIG.merge(initial_config) # Load config from environment variables load_from_environment # Load the config file if it exists if config_file && File.exist?(config_file) load_from_disk end # Validate that we have a correct config validate end |
Instance Attribute Details
#config_hash ⇒ Object (readonly)
Returns the value of attribute config_hash.
59 60 61 |
# File 'lib/appsignal/config.rb', line 59 def config_hash @config_hash end |
#env ⇒ Object (readonly)
Returns the value of attribute env.
59 60 61 |
# File 'lib/appsignal/config.rb', line 59 def env @env end |
#initial_config ⇒ Object (readonly)
Returns the value of attribute initial_config.
59 60 61 |
# File 'lib/appsignal/config.rb', line 59 def initial_config @initial_config end |
#logger ⇒ Object
Returns the value of attribute logger.
60 61 62 |
# File 'lib/appsignal/config.rb', line 60 def logger @logger end |
#root_path ⇒ Object (readonly)
Returns the value of attribute root_path.
59 60 61 |
# File 'lib/appsignal/config.rb', line 59 def root_path @root_path end |
Instance Method Details
#[](key) ⇒ Object
84 85 86 |
# File 'lib/appsignal/config.rb', line 84 def [](key) config_hash[key] end |
#[]=(key, value) ⇒ Object
88 89 90 |
# File 'lib/appsignal/config.rb', line 88 def []=(key, value) config_hash[key] = value end |
#active? ⇒ Boolean
114 115 116 |
# File 'lib/appsignal/config.rb', line 114 def active? @valid && self[:active] end |
#log_file_path ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/appsignal/config.rb', line 92 def log_file_path path = config_hash[:log_path] || root_path if path && File.writable?(path) return File.join(File.realpath(path), 'appsignal.log') end if File.writable? SYSTEM_TMP_DIR $stdout.puts "appsignal: Unable to log to '#{path}'. Logging to "\ "'#{SYSTEM_TMP_DIR}' instead. Please check the "\ "permissions for the application's log directory." File.join(SYSTEM_TMP_DIR, 'appsignal.log') else $stdout.puts "appsignal: Unable to log to '#{path}' or the "\ "'#{SYSTEM_TMP_DIR}' fallback. Please check the permissions "\ "for the application's (log) directory." end end |
#valid? ⇒ Boolean
110 111 112 |
# File 'lib/appsignal/config.rb', line 110 def valid? @valid end |
#write_to_environment ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/appsignal/config.rb', line 118 def write_to_environment ENV['APPSIGNAL_ACTIVE'] = active?.to_s ENV['APPSIGNAL_APP_PATH'] = root_path.to_s ENV['APPSIGNAL_AGENT_PATH'] = File.('../../../ext', __FILE__).to_s ENV['APPSIGNAL_ENVIRONMENT'] = env ENV['APPSIGNAL_AGENT_VERSION'] = Appsignal::Extension.agent_version ENV['APPSIGNAL_LANGUAGE_INTEGRATION_VERSION'] = Appsignal::VERSION ENV['APPSIGNAL_DEBUG_LOGGING'] = config_hash[:debug].to_s ENV['APPSIGNAL_LOG_FILE_PATH'] = log_file_path.to_s if log_file_path ENV['APPSIGNAL_PUSH_API_ENDPOINT'] = config_hash[:endpoint] ENV['APPSIGNAL_PUSH_API_KEY'] = config_hash[:push_api_key] ENV['APPSIGNAL_APP_NAME'] = config_hash[:name] ENV['APPSIGNAL_HTTP_PROXY'] = config_hash[:http_proxy] ENV['APPSIGNAL_IGNORE_ACTIONS'] = config_hash[:ignore_actions].join(',') ENV['APPSIGNAL_FILTER_PARAMETERS'] = config_hash[:filter_parameters].join(',') ENV['APPSIGNAL_SEND_PARAMS'] = config_hash[:send_params].to_s ENV['APPSIGNAL_RUNNING_IN_CONTAINER'] = config_hash[:running_in_container].to_s ENV['APPSIGNAL_WORKING_DIR_PATH'] = config_hash[:working_dir_path] if config_hash[:working_dir_path] ENV['APPSIGNAL_ENABLE_HOST_METRICS'] = config_hash[:enable_host_metrics].to_s ENV['APPSIGNAL_ENABLE_MINUTELY_PROBES'] = config_hash[:enable_minutely_probes].to_s ENV['APPSIGNAL_HOSTNAME'] = config_hash[:hostname].to_s ENV['APPSIGNAL_PROCESS_NAME'] = $0 ENV['APPSIGNAL_CA_FILE_PATH'] = config_hash[:ca_file_path].to_s end |