Class: Sentry::Configuration
- Inherits:
-
Object
- Object
- Sentry::Configuration
- Includes:
- ArgumentCheckingHelper, CustomInspection, LoggingHelper
- Defined in:
- lib/sentry/configuration.rb
Constant Summary collapse
- PUMA_IGNORE_DEFAULT =
These exceptions could enter Puma’s
lowlevel_error_handlercallback and the SDK’s Puma integration But they are mostly considered as noise and should be ignored by default Please see github.com/getsentry/sentry-ruby/pull/2026 for more information [ "Puma::MiniSSL::SSLError", "Puma::HttpParserError", "Puma::HttpParserError501" ].freeze
- IGNORE_DEFAULT =
Most of these errors generate 4XX responses. In general, Sentry clients only automatically report 5xx responses.
[ "Mongoid::Errors::DocumentNotFound", "Rack::QueryParser::InvalidParameterError", "Rack::QueryParser::ParameterTypeError", "Sinatra::NotFound" ].freeze
- RACK_ENV_WHITELIST_DEFAULT =
%w[ REMOTE_ADDR SERVER_NAME SERVER_PORT ].freeze
- TRACE_IGNORE_STATUS_CODES_DEFAULT =
[(301..303), (305..399), (401..404)]
- HEROKU_DYNO_METADATA_MESSAGE =
"You are running on Heroku but haven't enabled Dyno Metadata. For Sentry's "\ "release detection to work correctly, please run `heroku labs:enable runtime-dyno-metadata`"
- LOG_PREFIX =
"** [Sentry] "- MODULE_SEPARATOR =
"::"- SKIP_INSPECTION_ATTRIBUTES =
[:@linecache, :@stacktrace_builder]
- INSTRUMENTERS =
[:sentry, :otel]
- PROPAGATION_TARGETS_MATCH_ALL =
/.*/- DEFAULT_PATCHES =
i[redis puma http].freeze
- APP_DIRS_PATTERN =
/(bin|exe|app|config|lib|test|spec)/- DEFAULT_PROFILES_SAMPLE_INTERVAL =
101 Hz in microseconds
1e6 / 101
Instance Attribute Summary collapse
-
#app_dirs_pattern ⇒ Regexp?
Directories to be recognized as part of your app.
-
#auto_session_tracking ⇒ Boolean
Track sessions in request/response cycles automatically.
-
#background_worker_max_queue ⇒ Integer
The maximum queue size for the background worker.
-
#background_worker_threads ⇒ Integer
to send events in a non-blocking way, sentry-ruby has its own background worker by default, the worker holds a thread pool that has [the number of processors] threads but you can configure it with this configuration option E.g.: config.background_worker_threads = 5.
-
#backtrace_cleanup_callback ⇒ Proc?
a proc/lambda that takes an array of stack traces it’ll be used to silence (reduce) backtrace of the exception.
-
#before_breadcrumb ⇒ Proc
Optional Proc, called before adding the breadcrumb to the current scope.
-
#before_send ⇒ Proc
Optional Proc, called before sending an error event to the server.
-
#before_send_check_in ⇒ Proc
Optional Proc, called before sending a check-in event to the server.
-
#before_send_log ⇒ Proc
Optional Proc, called before sending an event to the server.
-
#before_send_metric ⇒ Proc?
Optional Proc, called before sending a metric.
-
#before_send_transaction ⇒ Proc
Optional Proc, called before sending a transaction event to the server.
-
#breadcrumbs_logger ⇒ Array<Symbol>
An array of breadcrumbs loggers to be used.
-
#context_lines ⇒ Integer?
Number of lines of code context to capture, or nil for none.
-
#cron ⇒ Cron::Configuration
readonly
Cron related configuration.
-
#debug ⇒ Boolean
Whether the SDK should run in the debugging mode.
-
#dsn ⇒ String
the dsn value, whether it’s set via
config.dsn=or ‘ENV`. -
#enable_backpressure_handling ⇒ Boolean
Whether to downsample transactions automatically because of backpressure.
-
#enable_logs ⇒ Boolean
Enable Structured Logging.
-
#enable_metrics ⇒ Boolean
Enable metrics collection, defaults to true.
-
#enabled_environments ⇒ Array<String>?
Whitelist of enabled_environments that will send notifications to Sentry.
-
#enabled_patches ⇒ Array<Symbol>
Array of patches to apply.
-
#environment ⇒ String
RACK_ENV by default.
-
#exclude_loggers ⇒ Array<String>
Logger ‘progname’s to exclude from breadcrumbs.
-
#excluded_exceptions ⇒ Array<String>
Array of exception classes that should never be sent.
-
#include_local_variables ⇒ Boolean
Whether to capture local variables from the raised exception’s frame.
-
#inspect_exception_causes_for_exclusion ⇒ Boolean
(also: #inspect_exception_causes_for_exclusion?)
Boolean to check nested exceptions when deciding if to exclude.
-
#instrumenter ⇒ Symbol
The instrumenter to use, :sentry or :otel.
-
#linecache ⇒ LineCache
You may provide your own LineCache for matching paths with source files.
-
#max_breadcrumbs ⇒ Integer
Max number of breadcrumbs a breadcrumb buffer can hold.
-
#max_log_events ⇒ Integer
Maximum number of log events to buffer before sending.
-
#max_metric_events ⇒ Integer
Maximum number of metric events to buffer before sending.
-
#profiler_class ⇒ Class
The profiler class.
-
#profiles_sample_interval ⇒ Float
Interval in microseconds at which to take samples.
-
#profiles_sample_rate ⇒ Float?
Take a float between 0.0 and 1.0 as the sample rate for capturing profiles.
-
#project_root ⇒ String
Project directory root for in_app detection.
-
#propagate_traces ⇒ Boolean
Insert sentry-trace to outgoing requests’ headers.
-
#rack_env_whitelist ⇒ Array<String>
Array of rack env parameters to be included in the event sent to sentry.
-
#release ⇒ String
Release tag to be passed with every event sent to Sentry.
-
#sample_rate ⇒ Float
The sampling factor to apply to events.
-
#sdk_debug_transport_log_file ⇒ String?
File path for DebugTransport to log events to.
-
#sdk_logger ⇒ Logger
Logger used by Sentry.
-
#send_client_reports ⇒ Boolean
Send diagnostic client reports about dropped events, true by default tries to attach to an existing envelope max once every 30s.
-
#send_default_pii ⇒ Boolean
When send_default_pii’s value is false (default), sensitive information like - user ip - user cookie - request body - query string will not be sent to Sentry.
-
#send_modules ⇒ Boolean
Include module versions in reports - boolean.
- #server_name ⇒ String
-
#skip_rake_integration ⇒ Boolean
Allow to skip Sentry emails within rake tasks.
-
#spotlight ⇒ Boolean, String
Whether to capture events and traces into Spotlight.
-
#std_lib_logger_filter ⇒ Proc?
Optional Proc, called to filter log messages before sending to Sentry.
-
#strip_backtrace_load_path ⇒ Boolean
Whether to strip the load path while constructing the backtrace frame filename.
-
#structured_logging ⇒ StructuredLoggingConfiguration
readonly
Structured logging configuration.
-
#trace_ignore_status_codes ⇒ Array<Integer>, Array<Range>
Collection of HTTP status codes or ranges of codes to ignore when tracing incoming requests.
-
#trace_propagation_targets ⇒ Array<String, Regexp>
Allowlist of outgoing request targets to which sentry-trace and baggage headers are attached.
-
#traces_sample_rate ⇒ Float?
Take a float between 0.0 and 1.0 as the sample rate for tracing events (transactions).
-
#traces_sampler ⇒ Proc
Take a Proc that controls the sample rate for every tracing event, e.g.
-
#transport ⇒ Transport::Configuration
readonly
Transport related configuration.
-
#trusted_proxies ⇒ Object
IP ranges for trusted proxies that will be skipped when calculating IP address.
Class Method Summary collapse
-
.add_post_initialization_callback(&block) ⇒ Object
allow extensions to add their hooks to the Configuration class.
- .after(event, &block) ⇒ Object
- .before(event, &block) ⇒ Object
-
.post_initialization_callbacks ⇒ Object
Post initialization callbacks are called at the end of initialization process allowing extending the configuration of sentry-ruby by multiple extensions.
- .validate(attribute, optional: false, type: nil) ⇒ Object
- .validations ⇒ Object
Instance Method Summary collapse
- #csp_report_uri ⇒ String?
- #detect_release ⇒ Object private
- #enabled_in_current_env? ⇒ Boolean
- #error_messages ⇒ Object private
- #exception_class_allowed?(exc) ⇒ Boolean
-
#initialize {|_self| ... } ⇒ Configuration
constructor
A new instance of Configuration.
- #profiling_enabled? ⇒ Boolean
- #sample_allowed? ⇒ Boolean
- #sending_allowed? ⇒ Boolean
- #sending_to_dsn_allowed? ⇒ Boolean
- #session_tracking? ⇒ Boolean
- #stacktrace_builder ⇒ Object private
- #tracing_enabled? ⇒ Boolean
- #valid_sample_rate?(sample_rate) ⇒ Boolean
- #validate ⇒ Object
Constructor Details
#initialize {|_self| ... } ⇒ Configuration
Returns a new instance of Configuration.
483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 |
# File 'lib/sentry/configuration.rb', line 483 def initialize run_callbacks(:before, :initialize) self.app_dirs_pattern = APP_DIRS_PATTERN self.debug = Sentry::Utils::EnvHelper.env_to_bool(ENV["SENTRY_DEBUG"]) self.background_worker_threads = (processor_count / 2.0).ceil self.background_worker_max_queue = BackgroundWorker::DEFAULT_MAX_QUEUE self.backtrace_cleanup_callback = nil self.strip_backtrace_load_path = true self. = BreadcrumbBuffer::DEFAULT_SIZE self. = [] self.context_lines = 3 self.include_local_variables = false self.environment = environment_from_env self.enabled_environments = nil self.exclude_loggers = [] self.excluded_exceptions = IGNORE_DEFAULT + PUMA_IGNORE_DEFAULT self.inspect_exception_causes_for_exclusion = true self.linecache = ::Sentry::LineCache.new self.sdk_logger = ::Sentry::Logger.new(STDOUT) self.project_root = Dir.pwd self.propagate_traces = true self.sample_rate = 1.0 self.send_modules = true self.send_default_pii = false self.skip_rake_integration = false self.send_client_reports = true self.auto_session_tracking = true self.enable_backpressure_handling = false self.trusted_proxies = [] self.dsn = ENV["SENTRY_DSN"] spotlight_env = ENV["SENTRY_SPOTLIGHT"] spotlight_bool = Sentry::Utils::EnvHelper.env_to_bool(spotlight_env, strict: true) self.spotlight = spotlight_bool.nil? ? (spotlight_env || false) : spotlight_bool self.server_name = server_name_from_env self.instrumenter = :sentry self.trace_propagation_targets = [PROPAGATION_TARGETS_MATCH_ALL] self.trace_ignore_status_codes = TRACE_IGNORE_STATUS_CODES_DEFAULT self.enabled_patches = DEFAULT_PATCHES.dup self.before_send = nil self.before_send_transaction = nil self.before_send_check_in = nil self.before_send_log = nil self.before_send_metric = nil self.std_lib_logger_filter = nil self.rack_env_whitelist = RACK_ENV_WHITELIST_DEFAULT self.traces_sampler = nil self.enable_logs = false self.enable_metrics = true self.profiler_class = Sentry::Profiler self.profiles_sample_interval = DEFAULT_PROFILES_SAMPLE_INTERVAL @transport = Transport::Configuration.new @cron = Cron::Configuration.new @structured_logging = StructuredLoggingConfiguration.new @gem_specs = Hash[Gem::Specification.map { |spec| [spec.name, spec.version.to_s] }] if Gem::Specification.respond_to?(:map) self.max_log_events = LogEventBuffer::DEFAULT_MAX_EVENTS self.max_metric_events = MetricEventBuffer::DEFAULT_MAX_METRICS run_callbacks(:after, :initialize) yield(self) if block_given? run_callbacks(:after, :configured) end |
Instance Attribute Details
#app_dirs_pattern ⇒ Regexp?
Directories to be recognized as part of your app. e.g. if you have an engines dir at the root of your project, you may want to set this to something like /(app|config|engines|lib)/
The default is value is /(bin|exe|app|config|lib|test|spec)/
32 33 34 |
# File 'lib/sentry/configuration.rb', line 32 def app_dirs_pattern @app_dirs_pattern end |
#auto_session_tracking ⇒ Boolean
Track sessions in request/response cycles automatically
284 285 286 |
# File 'lib/sentry/configuration.rb', line 284 def auto_session_tracking @auto_session_tracking end |
#background_worker_max_queue ⇒ Integer
The maximum queue size for the background worker. Jobs will be rejected above this limit.
Default is BackgroundWorker::DEFAULT_MAX_QUEUE.
49 50 51 |
# File 'lib/sentry/configuration.rb', line 49 def background_worker_max_queue @background_worker_max_queue end |
#background_worker_threads ⇒ Integer
to send events in a non-blocking way, sentry-ruby has its own background worker by default, the worker holds a thread pool that has [the number of processors] threads but you can configure it with this configuration option E.g.: config.background_worker_threads = 5
if you want to send events synchronously, set the value to 0 E.g.: config.background_worker_threads = 0
42 43 44 |
# File 'lib/sentry/configuration.rb', line 42 def background_worker_threads @background_worker_threads end |
#backtrace_cleanup_callback ⇒ Proc?
a proc/lambda that takes an array of stack traces it’ll be used to silence (reduce) backtrace of the exception
60 61 62 |
# File 'lib/sentry/configuration.rb', line 60 def backtrace_cleanup_callback @backtrace_cleanup_callback end |
#before_breadcrumb ⇒ Proc
Optional Proc, called before adding the breadcrumb to the current scope
69 70 71 |
# File 'lib/sentry/configuration.rb', line 69 def end |
#before_send ⇒ Proc
Optional Proc, called before sending an error event to the server
82 83 84 |
# File 'lib/sentry/configuration.rb', line 82 def before_send @before_send end |
#before_send_check_in ⇒ Proc
Optional Proc, called before sending a check-in event to the server
107 108 109 |
# File 'lib/sentry/configuration.rb', line 107 def before_send_check_in @before_send_check_in end |
#before_send_log ⇒ Proc
Optional Proc, called before sending an event to the server
116 117 118 |
# File 'lib/sentry/configuration.rb', line 116 def before_send_log @before_send_log end |
#before_send_metric ⇒ Proc?
Optional Proc, called before sending a metric
356 357 358 |
# File 'lib/sentry/configuration.rb', line 356 def before_send_metric @before_send_metric end |
#before_send_transaction ⇒ Proc
Optional Proc, called before sending a transaction event to the server
95 96 97 |
# File 'lib/sentry/configuration.rb', line 95 def before_send_transaction @before_send_transaction end |
#breadcrumbs_logger ⇒ Array<Symbol>
An array of breadcrumbs loggers to be used. Available options are:
-
:sentry_logger
-
:http_logger
-
:redis_logger
And if you also use sentry-rails:
-
:active_support_logger
127 128 129 |
# File 'lib/sentry/configuration.rb', line 127 def end |
#context_lines ⇒ Integer?
Number of lines of code context to capture, or nil for none
135 136 137 |
# File 'lib/sentry/configuration.rb', line 135 def context_lines @context_lines end |
#cron ⇒ Cron::Configuration (readonly)
Cron related configuration.
253 254 255 |
# File 'lib/sentry/configuration.rb', line 253 def cron @cron end |
#debug ⇒ Boolean
Whether the SDK should run in the debugging mode. Default is false. If set to true, SDK errors will be logged with backtrace
144 145 146 |
# File 'lib/sentry/configuration.rb', line 144 def debug @debug end |
#dsn ⇒ String
the dsn value, whether it’s set via config.dsn= or ‘ENV`
148 149 150 |
# File 'lib/sentry/configuration.rb', line 148 def dsn @dsn end |
#enable_backpressure_handling ⇒ Boolean
Whether to downsample transactions automatically because of backpressure. Starts a new monitor thread to check health of the SDK every 10 seconds. Default is false
290 291 292 |
# File 'lib/sentry/configuration.rb', line 290 def enable_backpressure_handling @enable_backpressure_handling end |
#enable_logs ⇒ Boolean
Enable Structured Logging
271 272 273 |
# File 'lib/sentry/configuration.rb', line 271 def enable_logs @enable_logs end |
#enable_metrics ⇒ Boolean
Enable metrics collection, defaults to true
343 344 345 |
# File 'lib/sentry/configuration.rb', line 343 def enable_metrics @enable_metrics end |
#enabled_environments ⇒ Array<String>?
Whitelist of enabled_environments that will send notifications to Sentry. Array of Strings.
152 153 154 |
# File 'lib/sentry/configuration.rb', line 152 def enabled_environments @enabled_environments end |
#enabled_patches ⇒ Array<Symbol>
Array of patches to apply. Default is DEFAULT_PATCHES
335 336 337 |
# File 'lib/sentry/configuration.rb', line 335 def enabled_patches @enabled_patches end |
#environment ⇒ String
RACK_ENV by default.
139 140 141 |
# File 'lib/sentry/configuration.rb', line 139 def environment @environment end |
#exclude_loggers ⇒ Array<String>
Logger ‘progname’s to exclude from breadcrumbs
156 157 158 |
# File 'lib/sentry/configuration.rb', line 156 def exclude_loggers @exclude_loggers end |
#excluded_exceptions ⇒ Array<String>
Array of exception classes that should never be sent. See IGNORE_DEFAULT. You should probably append to this rather than overwrite it.
161 162 163 |
# File 'lib/sentry/configuration.rb', line 161 def excluded_exceptions @excluded_exceptions end |
#include_local_variables ⇒ Boolean
Whether to capture local variables from the raised exception’s frame. Default is false.
170 171 172 |
# File 'lib/sentry/configuration.rb', line 170 def include_local_variables @include_local_variables end |
#inspect_exception_causes_for_exclusion ⇒ Boolean Also known as: inspect_exception_causes_for_exclusion?
Boolean to check nested exceptions when deciding if to exclude. Defaults to true
165 166 167 |
# File 'lib/sentry/configuration.rb', line 165 def inspect_exception_causes_for_exclusion @inspect_exception_causes_for_exclusion end |
#instrumenter ⇒ Symbol
The instrumenter to use, :sentry or :otel
311 312 313 |
# File 'lib/sentry/configuration.rb', line 311 def instrumenter @instrumenter end |
#linecache ⇒ LineCache
You may provide your own LineCache for matching paths with source files. This may be useful if you need to get source code from places other than the disk.
184 185 186 |
# File 'lib/sentry/configuration.rb', line 184 def linecache @linecache end |
#max_breadcrumbs ⇒ Integer
Max number of breadcrumbs a breadcrumb buffer can hold
131 132 133 |
# File 'lib/sentry/configuration.rb', line 131 def end |
#max_log_events ⇒ Integer
Maximum number of log events to buffer before sending
339 340 341 |
# File 'lib/sentry/configuration.rb', line 339 def max_log_events @max_log_events end |
#max_metric_events ⇒ Integer
Maximum number of metric events to buffer before sending
347 348 349 |
# File 'lib/sentry/configuration.rb', line 347 def max_metric_events @max_metric_events end |
#profiler_class ⇒ Class
The profiler class
315 316 317 |
# File 'lib/sentry/configuration.rb', line 315 def profiler_class @profiler_class end |
#profiles_sample_interval ⇒ Float
Interval in microseconds at which to take samples. The default is 1e6 / 101, or 101Hz. Note that the 101 is intentional to avoid lockstep sampling.
330 331 332 |
# File 'lib/sentry/configuration.rb', line 330 def profiles_sample_interval @profiles_sample_interval end |
#profiles_sample_rate ⇒ Float?
Take a float between 0.0 and 1.0 as the sample rate for capturing profiles. Note that this rate is relative to traces_sample_rate / traces_sampler, i.e. the profile is sampled by this rate after the transaction is sampled.
321 322 323 |
# File 'lib/sentry/configuration.rb', line 321 def profiles_sample_rate @profiles_sample_rate end |
#project_root ⇒ String
Project directory root for in_app detection. Could be Rails root, etc. Set automatically for Rails.
199 200 201 |
# File 'lib/sentry/configuration.rb', line 199 def project_root @project_root end |
#propagate_traces ⇒ Boolean
Insert sentry-trace to outgoing requests’ headers
208 209 210 |
# File 'lib/sentry/configuration.rb', line 208 def propagate_traces @propagate_traces end |
#rack_env_whitelist ⇒ Array<String>
Array of rack env parameters to be included in the event sent to sentry.
212 213 214 |
# File 'lib/sentry/configuration.rb', line 212 def rack_env_whitelist @rack_env_whitelist end |
#release ⇒ String
Release tag to be passed with every event sent to Sentry. We automatically try to set this to a git SHA or Capistrano release.
217 218 219 |
# File 'lib/sentry/configuration.rb', line 217 def release @release end |
#sample_rate ⇒ Float
The sampling factor to apply to events. A value of 0.0 will not send any events, and a value of 1.0 will send 100% of events.
222 223 224 |
# File 'lib/sentry/configuration.rb', line 222 def sample_rate @sample_rate end |
#sdk_debug_transport_log_file ⇒ String?
File path for DebugTransport to log events to. If not set, defaults to a temporary file. This is useful for debugging and testing purposes.
194 195 196 |
# File 'lib/sentry/configuration.rb', line 194 def sdk_debug_transport_log_file @sdk_debug_transport_log_file end |
#sdk_logger ⇒ Logger
Logger used by Sentry. In Rails, this is the Rails logger, otherwise Sentry provides its own Sentry::Logger.
189 190 191 |
# File 'lib/sentry/configuration.rb', line 189 def sdk_logger @sdk_logger end |
#send_client_reports ⇒ Boolean
Send diagnostic client reports about dropped events, true by default tries to attach to an existing envelope max once every 30s
280 281 282 |
# File 'lib/sentry/configuration.rb', line 280 def send_client_reports @send_client_reports end |
#send_default_pii ⇒ Boolean
When send_default_pii’s value is false (default), sensitive information like
-
user ip
-
user cookie
-
request body
-
query string
will not be sent to Sentry.
235 236 237 |
# File 'lib/sentry/configuration.rb', line 235 def send_default_pii @send_default_pii end |
#send_modules ⇒ Boolean
Include module versions in reports - boolean.
226 227 228 |
# File 'lib/sentry/configuration.rb', line 226 def send_modules @send_modules end |
#server_name ⇒ String
245 246 247 |
# File 'lib/sentry/configuration.rb', line 245 def server_name @server_name end |
#skip_rake_integration ⇒ Boolean
Allow to skip Sentry emails within rake tasks
239 240 241 |
# File 'lib/sentry/configuration.rb', line 239 def skip_rake_integration @skip_rake_integration end |
#spotlight ⇒ Boolean, String
Whether to capture events and traces into Spotlight. Default is false. If you set this to true, Sentry will send events and traces to the local Sidecar proxy at localhost:8969/stream. If you want to use a different Sidecar proxy address, set this to String with the proxy URL.
178 179 180 |
# File 'lib/sentry/configuration.rb', line 178 def spotlight @spotlight end |
#std_lib_logger_filter ⇒ Proc?
Optional Proc, called to filter log messages before sending to Sentry
365 366 367 |
# File 'lib/sentry/configuration.rb', line 365 def std_lib_logger_filter @std_lib_logger_filter end |
#strip_backtrace_load_path ⇒ Boolean
Whether to strip the load path while constructing the backtrace frame filename. Defaults to true.
204 205 206 |
# File 'lib/sentry/configuration.rb', line 204 def strip_backtrace_load_path @strip_backtrace_load_path end |
#structured_logging ⇒ StructuredLoggingConfiguration (readonly)
Structured logging configuration.
275 276 277 |
# File 'lib/sentry/configuration.rb', line 275 def structured_logging @structured_logging end |
#trace_ignore_status_codes ⇒ Array<Integer>, Array<Range>
Collection of HTTP status codes or ranges of codes to ignore when tracing incoming requests. If a transaction’s http.response.status_code matches one of these values, the transaction will be dropped and marked as not sampled. Defaults to TRACE_IGNORE_STATUS_CODES_DEFAULT.
307 308 309 |
# File 'lib/sentry/configuration.rb', line 307 def trace_ignore_status_codes @trace_ignore_status_codes end |
#trace_propagation_targets ⇒ Array<String, Regexp>
Allowlist of outgoing request targets to which sentry-trace and baggage headers are attached. Default is all (/.*/)
295 296 297 |
# File 'lib/sentry/configuration.rb', line 295 def trace_propagation_targets @trace_propagation_targets end |
#traces_sample_rate ⇒ Float?
Take a float between 0.0 and 1.0 as the sample rate for tracing events (transactions).
257 258 259 |
# File 'lib/sentry/configuration.rb', line 257 def traces_sample_rate @traces_sample_rate end |
#traces_sampler ⇒ Proc
Take a Proc that controls the sample rate for every tracing event, e.g.
267 268 269 |
# File 'lib/sentry/configuration.rb', line 267 def traces_sampler @traces_sampler end |
#transport ⇒ Transport::Configuration (readonly)
Transport related configuration.
249 250 251 |
# File 'lib/sentry/configuration.rb', line 249 def transport @transport end |
#trusted_proxies ⇒ Object
IP ranges for trusted proxies that will be skipped when calculating IP address.
242 243 244 |
# File 'lib/sentry/configuration.rb', line 242 def trusted_proxies @trusted_proxies end |
Class Method Details
.add_post_initialization_callback(&block) ⇒ Object
allow extensions to add their hooks to the Configuration class
423 424 425 |
# File 'lib/sentry/configuration.rb', line 423 def add_post_initialization_callback(&block) callbacks[:initialize][:after] << block end |
.after(event, &block) ⇒ Object
431 432 433 |
# File 'lib/sentry/configuration.rb', line 431 def after(event, &block) callbacks[event.to_sym][:after] << block end |
.before(event, &block) ⇒ Object
427 428 429 |
# File 'lib/sentry/configuration.rb', line 427 def before(event, &block) callbacks[event.to_sym][:before] << block end |
.post_initialization_callbacks ⇒ Object
Post initialization callbacks are called at the end of initialization process allowing extending the configuration of sentry-ruby by multiple extensions
418 419 420 |
# File 'lib/sentry/configuration.rb', line 418 def post_initialization_callbacks @post_initialization_callbacks ||= [] end |
.validate(attribute, optional: false, type: nil) ⇒ Object
447 448 449 450 451 452 453 |
# File 'lib/sentry/configuration.rb', line 447 def validate(attribute, optional: false, type: nil) validations[attribute] = { optional: optional, type: type, proc: build_validation_proc(optional, type) } end |
.validations ⇒ Object
443 444 445 |
# File 'lib/sentry/configuration.rb', line 443 def validations @validations ||= {} end |
Instance Method Details
#csp_report_uri ⇒ String?
723 724 725 726 727 728 729 730 |
# File 'lib/sentry/configuration.rb', line 723 def csp_report_uri if dsn && dsn.valid? uri = dsn.csp_report_uri uri += "&sentry_release=#{CGI.escape(release)}" if release && !release.empty? uri += "&sentry_environment=#{CGI.escape(environment)}" if environment && !environment.empty? uri end end |
#detect_release ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
745 746 747 748 749 750 751 752 753 754 755 |
# File 'lib/sentry/configuration.rb', line 745 def detect_release return unless sending_allowed? @release ||= ReleaseDetector.detect_release(project_root: project_root, running_on_heroku: running_on_heroku?) if running_on_heroku? && release.nil? log_warn(HEROKU_DYNO_METADATA_MESSAGE) end rescue => e log_error("Error detecting release", e, debug: debug) end |
#enabled_in_current_env? ⇒ Boolean
701 702 703 |
# File 'lib/sentry/configuration.rb', line 701 def enabled_in_current_env? enabled_environments.nil? || enabled_environments.include?(environment) end |
#error_messages ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
758 759 760 761 |
# File 'lib/sentry/configuration.rb', line 758 def @errors = [@errors[0]] + @errors[1..-1].map(&:downcase) # fix case of all but first @errors.join(", ") end |
#exception_class_allowed?(exc) ⇒ Boolean
688 689 690 691 692 693 694 695 696 697 698 699 |
# File 'lib/sentry/configuration.rb', line 688 def exception_class_allowed?(exc) if exc.is_a?(Sentry::Error) # Try to prevent error reporting loops log_debug("Refusing to capture Sentry error: #{exc.inspect}") false elsif excluded_exception?(exc) log_debug("User excluded error: #{exc.inspect}") false else true end end |
#profiling_enabled? ⇒ Boolean
716 717 718 719 720 |
# File 'lib/sentry/configuration.rb', line 716 def profiling_enabled? valid_sampler = !!(valid_sample_rate?(@profiles_sample_rate)) tracing_enabled? && valid_sampler && sending_allowed? end |
#sample_allowed? ⇒ Boolean
678 679 680 681 682 |
# File 'lib/sentry/configuration.rb', line 678 def sample_allowed? return true if sample_rate == 1.0 Random.rand < sample_rate end |
#sending_allowed? ⇒ Boolean
668 669 670 |
# File 'lib/sentry/configuration.rb', line 668 def sending_allowed? spotlight || sending_to_dsn_allowed? end |
#sending_to_dsn_allowed? ⇒ Boolean
672 673 674 675 676 |
# File 'lib/sentry/configuration.rb', line 672 def sending_to_dsn_allowed? @errors = [] valid? && capture_in_environment? end |
#session_tracking? ⇒ Boolean
684 685 686 |
# File 'lib/sentry/configuration.rb', line 684 def session_tracking? auto_session_tracking && enabled_in_current_env? end |
#stacktrace_builder ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
733 734 735 736 737 738 739 740 741 742 |
# File 'lib/sentry/configuration.rb', line 733 def stacktrace_builder @stacktrace_builder ||= StacktraceBuilder.new( project_root: @project_root.to_s, app_dirs_pattern: @app_dirs_pattern, linecache: @linecache, context_lines: @context_lines, backtrace_cleanup_callback: @backtrace_cleanup_callback, strip_backtrace_load_path: @strip_backtrace_load_path ) end |
#tracing_enabled? ⇒ Boolean
710 711 712 713 714 |
# File 'lib/sentry/configuration.rb', line 710 def tracing_enabled? valid_sampler = !!((valid_sample_rate?(@traces_sample_rate)) || @traces_sampler) valid_sampler && sending_allowed? end |
#valid_sample_rate?(sample_rate) ⇒ Boolean
705 706 707 708 |
# File 'lib/sentry/configuration.rb', line 705 def valid_sample_rate?(sample_rate) return false unless sample_rate.is_a?(Numeric) sample_rate >= 0.0 && sample_rate <= 1.0 end |
#validate ⇒ Object
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 |
# File 'lib/sentry/configuration.rb', line 554 def validate if profiler_class == Sentry::Profiler && profiles_sample_rate && !Sentry.dependency_installed?(:StackProf) log_warn("Please add the 'stackprof' gem to your Gemfile to use the StackProf profiler with Sentry.") end if profiler_class == Sentry::Vernier::Profiler && profiles_sample_rate && !Sentry.dependency_installed?(:Vernier) log_warn("Please add the 'vernier' gem to your Gemfile to use the Vernier profiler with Sentry.") end self.class.validations.each do |attribute, validation| value = public_send(attribute) next if (result = validation[:proc].call(value)) === true raise ArgumentError, result[:error] end end |