Class: Flare::Configuration
- Inherits:
-
Object
- Object
- Flare::Configuration
- 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
- #database_path ⇒ Object
-
#debug ⇒ Object
Enable debug logging to see what Flare is doing.
-
#enabled ⇒ Object
Returns the value of attribute enabled.
-
#http_metrics_config ⇒ Object
readonly
HTTP metrics path tracking configuration.
-
#ignore_request ⇒ Object
Returns the value of attribute ignore_request.
-
#key ⇒ Object
API key for authentication.
-
#max_spans ⇒ Object
Returns the value of attribute max_spans.
-
#metrics_enabled ⇒ Object
Returns the value of attribute metrics_enabled.
-
#metrics_flush_interval ⇒ Object
seconds between flushes (default: 60).
-
#metrics_gzip ⇒ Object
Whether to gzip payloads (default: true).
-
#metrics_timeout ⇒ Object
HTTP timeout in seconds (default: 5).
-
#retention_hours ⇒ Object
Returns the value of attribute retention_hours.
-
#spans_enabled ⇒ Object
Spans: detailed trace data stored in SQLite (default: development only) Metrics: aggregated counters in memory, flushed periodically (default: production only) Tracing: server-controlled per-route trace sampling.
-
#subscribe_patterns ⇒ Object
Returns the value of attribute subscribe_patterns.
-
#tracing_enabled ⇒ Object
Returns the value of attribute tracing_enabled.
-
#tracing_max_queue ⇒ Object
max traced spans buffered per process.
-
#tracing_poll_interval ⇒ Object
seconds between /api/rules polls (default: 30).
-
#url ⇒ Object
Metrics HTTP submission settings.
Instance Method Summary collapse
-
#http_metrics {|@http_metrics_config| ... } ⇒ Object
Configure HTTP metrics path tracking.
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
-
#metrics_submission_configured? ⇒ Boolean
Check if metrics can be submitted (endpoint and API key configured).
-
#tracing_submission_configured? ⇒ Boolean
Tracing reuses the same endpoint + key as metrics.
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/flare/configuration.rb', line 45 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 @tracing_enabled = !rails_test? @tracing_poll_interval = 30 # seconds @tracing_max_queue = 5_000 # 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_path ⇒ Object
84 85 86 |
# File 'lib/flare/configuration.rb', line 84 def database_path @database_path || default_database_path end |
#debug ⇒ Object
Enable debug logging to see what Flare is doing. Set FLARE_DEBUG=1 or configure debug: true in your initializer.
43 44 45 |
# File 'lib/flare/configuration.rb', line 43 def debug @debug end |
#enabled ⇒ Object
Returns the value of attribute enabled.
7 8 9 |
# File 'lib/flare/configuration.rb', line 7 def enabled @enabled end |
#http_metrics_config ⇒ Object (readonly)
HTTP metrics path tracking configuration. Controls which outgoing HTTP paths are tracked with detail vs collapsed to “*”.
39 40 41 |
# File 'lib/flare/configuration.rb', line 39 def http_metrics_config @http_metrics_config end |
#ignore_request ⇒ Object
Returns the value of attribute ignore_request.
10 11 12 |
# File 'lib/flare/configuration.rb', line 10 def ignore_request @ignore_request end |
#key ⇒ Object
API key for authentication
27 28 29 |
# File 'lib/flare/configuration.rb', line 27 def key @key end |
#max_spans ⇒ Object
Returns the value of attribute max_spans.
9 10 11 |
# File 'lib/flare/configuration.rb', line 9 def max_spans @max_spans end |
#metrics_enabled ⇒ Object
Returns the value of attribute metrics_enabled.
19 20 21 |
# File 'lib/flare/configuration.rb', line 19 def metrics_enabled @metrics_enabled end |
#metrics_flush_interval ⇒ Object
seconds between flushes (default: 60)
20 21 22 |
# File 'lib/flare/configuration.rb', line 20 def metrics_flush_interval @metrics_flush_interval end |
#metrics_gzip ⇒ Object
Whether to gzip payloads (default: true)
29 30 31 |
# File 'lib/flare/configuration.rb', line 29 def metrics_gzip @metrics_gzip end |
#metrics_timeout ⇒ Object
HTTP timeout in seconds (default: 5)
28 29 30 |
# File 'lib/flare/configuration.rb', line 28 def metrics_timeout @metrics_timeout end |
#retention_hours ⇒ Object
Returns the value of attribute retention_hours.
8 9 10 |
# File 'lib/flare/configuration.rb', line 8 def retention_hours @retention_hours end |
#spans_enabled ⇒ Object
Spans: detailed trace data stored in SQLite (default: development only) Metrics: aggregated counters in memory, flushed periodically (default: production only) Tracing: server-controlled per-route trace sampling. Polls /api/rules for which routes/jobs to capture, ships matched traces direct to R2 via presigned URLs, self-notifies POST /api/traces.
18 19 20 |
# File 'lib/flare/configuration.rb', line 18 def spans_enabled @spans_enabled end |
#subscribe_patterns ⇒ Object
Returns the value of attribute subscribe_patterns.
35 36 37 |
# File 'lib/flare/configuration.rb', line 35 def subscribe_patterns @subscribe_patterns end |
#tracing_enabled ⇒ Object
Returns the value of attribute tracing_enabled.
21 22 23 |
# File 'lib/flare/configuration.rb', line 21 def tracing_enabled @tracing_enabled end |
#tracing_max_queue ⇒ Object
max traced spans buffered per process
23 24 25 |
# File 'lib/flare/configuration.rb', line 23 def tracing_max_queue @tracing_max_queue end |
#tracing_poll_interval ⇒ Object
seconds between /api/rules polls (default: 30)
22 23 24 |
# File 'lib/flare/configuration.rb', line 22 def tracing_poll_interval @tracing_poll_interval end |
#url ⇒ Object
Metrics HTTP submission settings
26 27 28 |
# File 'lib/flare/configuration.rb', line 26 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
98 99 100 101 102 103 104 |
# File 'lib/flare/configuration.rb', line 98 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)
74 75 76 77 |
# File 'lib/flare/configuration.rb', line 74 def metrics_submission_configured? !@url.nil? && !@url.empty? && !@key.nil? && !@key.empty? end |
#tracing_submission_configured? ⇒ Boolean
Tracing reuses the same endpoint + key as metrics.
80 81 82 |
# File 'lib/flare/configuration.rb', line 80 def tracing_submission_configured? @tracing_enabled && metrics_submission_configured? end |