Class: Flare::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/flare/configuration.rb

Constant Summary collapse

DEFAULT_SUBSCRIBE_PATTERNS =

Default patterns to auto-subscribe to for custom instrumentation Use “app.” prefix in your ActiveSupport::Notifications.instrument calls

%w[app.].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/flare/configuration.rb', line 39

def initialize
  @enabled = true
  @retention_hours = 24
  @max_spans = 10_000
  @database_path = nil
  @ignore_request = ->(request) { false }
  @subscribe_patterns = DEFAULT_SUBSCRIBE_PATTERNS.dup
  @debug = ENV["FLARE_DEBUG"] == "1"
  @http_metrics_config = HttpMetricsConfig::DEFAULT

  # Environment-based defaults:
  # - Development: spans ON (detailed debugging), metrics ON
  # - Production: spans OFF (too expensive), metrics ON
  # - Test: spans OFF, metrics OFF
  @spans_enabled = rails_development?
  @metrics_enabled = !rails_test?
  @metrics_flush_interval = 60 # seconds

  # Metrics HTTP submission defaults
  @url = ENV.fetch("FLARE_URL", credentials_url || "https://flare.am")
  @key = ENV["FLARE_KEY"]
  @metrics_timeout = 5
  @metrics_gzip = true
end

Instance Attribute Details

#database_pathObject



70
71
72
# File 'lib/flare/configuration.rb', line 70

def database_path
  @database_path || default_database_path
end

#debugObject

Enable debug logging to see what Flare is doing. Set FLARE_DEBUG=1 or configure debug: true in your initializer.



37
38
39
# File 'lib/flare/configuration.rb', line 37

def debug
  @debug
end

#enabledObject

Returns the value of attribute enabled.



7
8
9
# File 'lib/flare/configuration.rb', line 7

def enabled
  @enabled
end

#http_metrics_configObject (readonly)

HTTP metrics path tracking configuration. Controls which outgoing HTTP paths are tracked with detail vs collapsed to “*”.



33
34
35
# File 'lib/flare/configuration.rb', line 33

def http_metrics_config
  @http_metrics_config
end

#ignore_requestObject

Returns the value of attribute ignore_request.



10
11
12
# File 'lib/flare/configuration.rb', line 10

def ignore_request
  @ignore_request
end

#keyObject

API key for authentication



21
22
23
# File 'lib/flare/configuration.rb', line 21

def key
  @key
end

#max_spansObject

Returns the value of attribute max_spans.



9
10
11
# File 'lib/flare/configuration.rb', line 9

def max_spans
  @max_spans
end

#metrics_enabledObject

Returns the value of attribute metrics_enabled.



16
17
18
# File 'lib/flare/configuration.rb', line 16

def metrics_enabled
  @metrics_enabled
end

#metrics_flush_intervalObject

seconds between flushes (default: 60)



17
18
19
# File 'lib/flare/configuration.rb', line 17

def metrics_flush_interval
  @metrics_flush_interval
end

#metrics_gzipObject

Whether to gzip payloads (default: true)



23
24
25
# File 'lib/flare/configuration.rb', line 23

def metrics_gzip
  @metrics_gzip
end

#metrics_timeoutObject

HTTP timeout in seconds (default: 5)



22
23
24
# File 'lib/flare/configuration.rb', line 22

def metrics_timeout
  @metrics_timeout
end

#retention_hoursObject

Returns the value of attribute retention_hours.



8
9
10
# File 'lib/flare/configuration.rb', line 8

def retention_hours
  @retention_hours
end

#spans_enabledObject

Spans: detailed trace data stored in SQLite (default: development only) Metrics: aggregated counters in memory, flushed periodically (default: production only)



15
16
17
# File 'lib/flare/configuration.rb', line 15

def spans_enabled
  @spans_enabled
end

#subscribe_patternsObject

Returns the value of attribute subscribe_patterns.



29
30
31
# File 'lib/flare/configuration.rb', line 29

def subscribe_patterns
  @subscribe_patterns
end

#urlObject

Metrics HTTP submission settings



20
21
22
# File 'lib/flare/configuration.rb', line 20

def url
  @url
end

Instance Method Details

#http_metrics {|@http_metrics_config| ... } ⇒ Object

Configure HTTP metrics path tracking.

config.http_metrics do |http|
  http.host "api.stripe.com" do |h|
    h.allow %r{/v1/customers}
    h.allow %r{/v1/charges}
    h.map %r{/v1/connect/[\w-]+/transfers}, "/v1/connect/:account/transfers"
  end
  http.host "api.github.com", :all
end

Yields:



84
85
86
87
88
89
90
# File 'lib/flare/configuration.rb', line 84

def http_metrics(&block)
  # Clone defaults on first customization so user additions merge with built-in defaults
  if @http_metrics_config.equal?(HttpMetricsConfig::DEFAULT)
    @http_metrics_config = @http_metrics_config.dup
  end
  yield @http_metrics_config
end

#metrics_submission_configured?Boolean

Check if metrics can be submitted (endpoint and API key configured)

Returns:

  • (Boolean)


65
66
67
68
# File 'lib/flare/configuration.rb', line 65

def metrics_submission_configured?
  !@url.nil? && !@url.empty? &&
    !@key.nil? && !@key.empty?
end