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).
-
#subscribe_patterns ⇒ Object
Returns the value of attribute subscribe_patterns.
-
#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).
Constructor Details
#initialize ⇒ Configuration
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_path ⇒ Object
70 71 72 |
# File 'lib/flare/configuration.rb', line 70 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.
37 38 39 |
# File 'lib/flare/configuration.rb', line 37 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 “*”.
33 34 35 |
# File 'lib/flare/configuration.rb', line 33 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
21 22 23 |
# File 'lib/flare/configuration.rb', line 21 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.
16 17 18 |
# File 'lib/flare/configuration.rb', line 16 def metrics_enabled @metrics_enabled end |
#metrics_flush_interval ⇒ Object
seconds between flushes (default: 60)
17 18 19 |
# File 'lib/flare/configuration.rb', line 17 def metrics_flush_interval @metrics_flush_interval end |
#metrics_gzip ⇒ Object
Whether to gzip payloads (default: true)
23 24 25 |
# File 'lib/flare/configuration.rb', line 23 def metrics_gzip @metrics_gzip end |
#metrics_timeout ⇒ Object
HTTP timeout in seconds (default: 5)
22 23 24 |
# File 'lib/flare/configuration.rb', line 22 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)
15 16 17 |
# File 'lib/flare/configuration.rb', line 15 def spans_enabled @spans_enabled end |
#subscribe_patterns ⇒ Object
Returns the value of attribute subscribe_patterns.
29 30 31 |
# File 'lib/flare/configuration.rb', line 29 def subscribe_patterns @subscribe_patterns end |
#url ⇒ Object
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
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)
65 66 67 68 |
# File 'lib/flare/configuration.rb', line 65 def metrics_submission_configured? !@url.nil? && !@url.empty? && !@key.nil? && !@key.empty? end |