Class: ShieldPressTracker::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/shieldpress_tracker/config.rb

Constant Summary collapse

DEFAULTS =
{
  api_url: "https://api.shieldpress.net", report_interval: 60, system_metrics: true,
  http_tracking: true, error_tracking: true, security_tracking: true, dep_audit: true,
  dep_audit_interval: 3600, runtime_metrics: true, env_security: true, heartbeat: true,
  app_name: "ruby-app", app_version: "0.0.0", environment: "production", tags: {},
  ignore_paths: ["/health", "/healthz", "/ready", "/favicon.ico", "/assets/*"],
  max_error_buffer: 100, max_security_buffer: 500, debug: false
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(values = {}) ⇒ Config

Returns a new instance of Config.

Raises:

  • (ArgumentError)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/shieldpress_tracker/config.rb', line 14

def initialize(values = {})
  values = values.transform_keys(&:to_sym)
  @api_key = values[:api_key] || ENV["SHIELDPRESS_API_KEY"] || ENV["SHIELDPRESS_SECRET"]
  @site_id = values[:site_id] || ENV["SHIELDPRESS_SITE_ID"] || ENV["SHIELDPRESS_APP_ID"]
  raise ArgumentError, "[ShieldPress] api_key is required" if @api_key.to_s.empty?
  raise ArgumentError, "[ShieldPress] site_id is required" if @site_id.to_s.empty?
  DEFAULTS.each do |key, default|
    env = { api_url: "SHIELDPRESS_API_URL", app_name: "SHIELDPRESS_APP_NAME", app_version: "SHIELDPRESS_APP_VERSION" }[key]
    value = values.key?(key) ? values[key] : (env && ENV[env]) || default
    instance_variable_set("@#{key}", value)
  end
  @api_url = @api_url.sub(%r{/$}, "")
  @environment = values[:environment] || ENV["APP_ENV"] || ENV["RACK_ENV"] || "production"
end