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_handler` callback 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
- 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)/
Instance Attribute Summary collapse
-
#app_dirs_pattern ⇒ Regexp?
Directories to be recognized as part of your app.
-
#async ⇒ Proc?
deprecated
Deprecated.
It will be removed in the next major release. Please read github.com/getsentry/sentry-ruby/issues/1522 for more information
-
#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 event to the server.
-
#before_send_log ⇒ Proc
Optional Proc, called before sending an event to the server.
-
#before_send_transaction ⇒ Proc
Optional Proc, called before sending an 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_tracing ⇒ Boolean?
deprecated
Deprecated.
It will be removed in the next major release.
-
#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
(also: #capture_exception_frame_locals)
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.
-
#metrics ⇒ Metrics::Configuration
readonly
Metrics related configuration.
-
#profiler_class ⇒ Class
The profiler class.
-
#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.
-
#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_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.
-
.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
-
#capture_exception_frame_locals=(value) ⇒ Object
deprecated
Deprecated.
Use #include_local_variables= instead.
- #csp_report_uri ⇒ String?
- #detect_release ⇒ Object private
- #enabled_in_current_env? ⇒ Boolean
- #error_messages ⇒ Object private
- #exception_class_allowed?(exc) ⇒ Boolean
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
-
#logger ⇒ Object
deprecated
Deprecated.
Use #sdk_logger instead.
-
#logger=(logger) ⇒ Object
deprecated
Deprecated.
Use #sdk_logger= instead.
- #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 ⇒ Configuration
Returns a new instance of Configuration.
446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 |
# File 'lib/sentry/configuration.rb', line 446 def 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 = [] 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.enabled_patches = DEFAULT_PATCHES.dup self.before_send = nil self.before_send_transaction = nil self.before_send_log = nil self.rack_env_whitelist = RACK_ENV_WHITELIST_DEFAULT self.traces_sampler = nil self.enable_tracing = nil self.enable_logs = false self.profiler_class = Sentry::Profiler @transport = Transport::Configuration.new @cron = Cron::Configuration.new @metrics = Metrics::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) run_post_initialization_callbacks self.max_log_events = LogEventBuffer::DEFAULT_MAX_EVENTS 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 |
#async ⇒ Proc?
It will be removed in the next major release. Please read github.com/getsentry/sentry-ruby/issues/1522 for more information
Provide an object that responds to ‘call` to send events asynchronously. E.g.: lambda { |event| Thread.new { Sentry.send_event(event) } }
39 40 41 |
# File 'lib/sentry/configuration.rb', line 39 def async @async end |
#auto_session_tracking ⇒ Boolean
Track sessions in request/response cycles automatically
315 316 317 |
# File 'lib/sentry/configuration.rb', line 315 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.
56 57 58 |
# File 'lib/sentry/configuration.rb', line 56 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
49 50 51 |
# File 'lib/sentry/configuration.rb', line 49 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
67 68 69 |
# File 'lib/sentry/configuration.rb', line 67 def backtrace_cleanup_callback @backtrace_cleanup_callback end |
#before_breadcrumb ⇒ Proc
Optional Proc, called before adding the breadcrumb to the current scope
76 77 78 |
# File 'lib/sentry/configuration.rb', line 76 def @before_breadcrumb end |
#before_send ⇒ Proc
Optional Proc, called before sending an event to the server
90 91 92 |
# File 'lib/sentry/configuration.rb', line 90 def before_send @before_send end |
#before_send_log ⇒ Proc
Optional Proc, called before sending an event to the server
112 113 114 |
# File 'lib/sentry/configuration.rb', line 112 def before_send_log @before_send_log end |
#before_send_transaction ⇒ Proc
Optional Proc, called before sending an event to the server
103 104 105 |
# File 'lib/sentry/configuration.rb', line 103 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
-
:monotonic_active_support_logger
124 125 126 |
# File 'lib/sentry/configuration.rb', line 124 def @breadcrumbs_logger end |
#context_lines ⇒ Integer?
Number of lines of code context to capture, or nil for none
132 133 134 |
# File 'lib/sentry/configuration.rb', line 132 def context_lines @context_lines end |
#cron ⇒ Cron::Configuration (readonly)
Cron related configuration.
274 275 276 |
# File 'lib/sentry/configuration.rb', line 274 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
141 142 143 |
# File 'lib/sentry/configuration.rb', line 141 def debug @debug end |
#dsn ⇒ String
the dsn value, whether it’s set via ‘config.dsn=` or `ENV`
145 146 147 |
# File 'lib/sentry/configuration.rb', line 145 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
321 322 323 |
# File 'lib/sentry/configuration.rb', line 321 def enable_backpressure_handling @enable_backpressure_handling end |
#enable_logs ⇒ Boolean
Enable Structured Logging
296 297 298 |
# File 'lib/sentry/configuration.rb', line 296 def enable_logs @enable_logs end |
#enable_tracing ⇒ Boolean?
It will be removed in the next major release.
Easier way to use performance tracing If set to true, will set traces_sample_rate to 1.0
306 307 308 |
# File 'lib/sentry/configuration.rb', line 306 def enable_tracing @enable_tracing end |
#enabled_environments ⇒ Array<String>
Whitelist of enabled_environments that will send notifications to Sentry. Array of Strings.
149 150 151 |
# File 'lib/sentry/configuration.rb', line 149 def enabled_environments @enabled_environments end |
#enabled_patches ⇒ Array<Symbol>
Array of patches to apply. Default is DEFAULT_PATCHES
345 346 347 |
# File 'lib/sentry/configuration.rb', line 345 def enabled_patches @enabled_patches end |
#environment ⇒ String
RACK_ENV by default.
136 137 138 |
# File 'lib/sentry/configuration.rb', line 136 def environment @environment end |
#exclude_loggers ⇒ Array<String>
Logger ‘progname’s to exclude from breadcrumbs
153 154 155 |
# File 'lib/sentry/configuration.rb', line 153 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.
158 159 160 |
# File 'lib/sentry/configuration.rb', line 158 def excluded_exceptions @excluded_exceptions end |
#include_local_variables ⇒ Boolean Also known as: capture_exception_frame_locals
Whether to capture local variables from the raised exception’s frame. Default is false.
167 168 169 |
# File 'lib/sentry/configuration.rb', line 167 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
162 163 164 |
# File 'lib/sentry/configuration.rb', line 162 def inspect_exception_causes_for_exclusion @inspect_exception_causes_for_exclusion end |
#instrumenter ⇒ Symbol
The instrumenter to use, :sentry or :otel
330 331 332 |
# File 'lib/sentry/configuration.rb', line 330 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.
193 194 195 |
# File 'lib/sentry/configuration.rb', line 193 def linecache @linecache end |
#max_breadcrumbs ⇒ Integer
Max number of breadcrumbs a breadcrumb buffer can hold
128 129 130 |
# File 'lib/sentry/configuration.rb', line 128 def @max_breadcrumbs end |
#max_log_events ⇒ Integer
Maximum number of log events to buffer before sending
349 350 351 |
# File 'lib/sentry/configuration.rb', line 349 def max_log_events @max_log_events end |
#metrics ⇒ Metrics::Configuration (readonly)
Metrics related configuration.
278 279 280 |
# File 'lib/sentry/configuration.rb', line 278 def metrics @metrics end |
#profiler_class ⇒ Class
The profiler class
334 335 336 |
# File 'lib/sentry/configuration.rb', line 334 def profiler_class @profiler_class 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.
340 341 342 |
# File 'lib/sentry/configuration.rb', line 340 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.
220 221 222 |
# File 'lib/sentry/configuration.rb', line 220 def project_root @project_root end |
#propagate_traces ⇒ Boolean
Insert sentry-trace to outgoing requests’ headers
229 230 231 |
# File 'lib/sentry/configuration.rb', line 229 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.
233 234 235 |
# File 'lib/sentry/configuration.rb', line 233 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.
238 239 240 |
# File 'lib/sentry/configuration.rb', line 238 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.
243 244 245 |
# File 'lib/sentry/configuration.rb', line 243 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.
203 204 205 |
# File 'lib/sentry/configuration.rb', line 203 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.
198 199 200 |
# File 'lib/sentry/configuration.rb', line 198 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
311 312 313 |
# File 'lib/sentry/configuration.rb', line 311 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.
256 257 258 |
# File 'lib/sentry/configuration.rb', line 256 def send_default_pii @send_default_pii end |
#send_modules ⇒ Boolean
Include module versions in reports - boolean.
247 248 249 |
# File 'lib/sentry/configuration.rb', line 247 def send_modules @send_modules end |
#server_name ⇒ String
266 267 268 |
# File 'lib/sentry/configuration.rb', line 266 def server_name @server_name end |
#skip_rake_integration ⇒ Boolean
Allow to skip Sentry emails within rake tasks
260 261 262 |
# File 'lib/sentry/configuration.rb', line 260 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.
175 176 177 |
# File 'lib/sentry/configuration.rb', line 175 def spotlight @spotlight end |
#strip_backtrace_load_path ⇒ Boolean
Whether to strip the load path while constructing the backtrace frame filename. Defaults to true.
225 226 227 |
# File 'lib/sentry/configuration.rb', line 225 def strip_backtrace_load_path @strip_backtrace_load_path end |
#structured_logging ⇒ StructuredLoggingConfiguration (readonly)
Structured logging configuration.
300 301 302 |
# File 'lib/sentry/configuration.rb', line 300 def structured_logging @structured_logging end |
#trace_propagation_targets ⇒ Array<String, Regexp>
Allowlist of outgoing request targets to which sentry-trace and baggage headers are attached. Default is all (/.*/)
326 327 328 |
# File 'lib/sentry/configuration.rb', line 326 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).
282 283 284 |
# File 'lib/sentry/configuration.rb', line 282 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.
292 293 294 |
# File 'lib/sentry/configuration.rb', line 292 def traces_sampler @traces_sampler end |
#transport ⇒ Transport::Configuration (readonly)
Transport related configuration.
270 271 272 |
# File 'lib/sentry/configuration.rb', line 270 def transport @transport end |
#trusted_proxies ⇒ Object
IP ranges for trusted proxies that will be skipped when calculating IP address.
263 264 265 |
# File 'lib/sentry/configuration.rb', line 263 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
402 403 404 |
# File 'lib/sentry/configuration.rb', line 402 def add_post_initialization_callback(&block) post_initialization_callbacks << 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
397 398 399 |
# File 'lib/sentry/configuration.rb', line 397 def post_initialization_callbacks @post_initialization_callbacks ||= [] end |
.validate(attribute, optional: false, type: nil) ⇒ Object
410 411 412 413 414 415 416 |
# File 'lib/sentry/configuration.rb', line 410 def validate(attribute, optional: false, type: nil) validations[attribute] = { optional: optional, type: type, proc: build_validation_proc(optional, type) } end |
.validations ⇒ Object
406 407 408 |
# File 'lib/sentry/configuration.rb', line 406 def validations @validations ||= {} end |
Instance Method Details
#capture_exception_frame_locals=(value) ⇒ Object
Use #include_local_variables= instead.
181 182 183 184 185 186 187 |
# File 'lib/sentry/configuration.rb', line 181 def capture_exception_frame_locals=(value) log_warn <<~MSG `capture_exception_frame_locals` is now deprecated in favor of `include_local_variables`. MSG self.include_local_variables = value end |
#csp_report_uri ⇒ String?
676 677 678 679 680 681 682 683 |
# File 'lib/sentry/configuration.rb', line 676 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.
698 699 700 701 702 703 704 705 706 707 708 |
# File 'lib/sentry/configuration.rb', line 698 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
654 655 656 |
# File 'lib/sentry/configuration.rb', line 654 def enabled_in_current_env? enabled_environments.empty? || 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.
711 712 713 714 |
# File 'lib/sentry/configuration.rb', line 711 def @errors = [@errors[0]] + @errors[1..-1].map(&:downcase) # fix case of all but first @errors.join(", ") end |
#exception_class_allowed?(exc) ⇒ Boolean
641 642 643 644 645 646 647 648 649 650 651 652 |
# File 'lib/sentry/configuration.rb', line 641 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 |
#logger ⇒ Object
Use #sdk_logger instead.
212 213 214 215 |
# File 'lib/sentry/configuration.rb', line 212 def logger warn "[sentry] `config.logger` is deprecated. Please use `config.sdk_logger` instead." self.sdk_logger end |
#logger=(logger) ⇒ Object
Use #sdk_logger= instead.
206 207 208 209 |
# File 'lib/sentry/configuration.rb', line 206 def logger=(logger) warn "[sentry] `config.logger=` is deprecated. Please use `config.sdk_logger=` instead." self.sdk_logger = logger end |
#profiling_enabled? ⇒ Boolean
669 670 671 672 673 |
# File 'lib/sentry/configuration.rb', line 669 def profiling_enabled? valid_sampler = !!(valid_sample_rate?(@profiles_sample_rate)) tracing_enabled? && valid_sampler && sending_allowed? end |
#sample_allowed? ⇒ Boolean
631 632 633 634 635 |
# File 'lib/sentry/configuration.rb', line 631 def sample_allowed? return true if sample_rate == 1.0 Random.rand < sample_rate end |
#sending_allowed? ⇒ Boolean
621 622 623 |
# File 'lib/sentry/configuration.rb', line 621 def sending_allowed? spotlight || sending_to_dsn_allowed? end |
#sending_to_dsn_allowed? ⇒ Boolean
625 626 627 628 629 |
# File 'lib/sentry/configuration.rb', line 625 def sending_to_dsn_allowed? @errors = [] valid? && capture_in_environment? end |
#session_tracking? ⇒ Boolean
637 638 639 |
# File 'lib/sentry/configuration.rb', line 637 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.
686 687 688 689 690 691 692 693 694 695 |
# File 'lib/sentry/configuration.rb', line 686 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
663 664 665 666 667 |
# File 'lib/sentry/configuration.rb', line 663 def tracing_enabled? valid_sampler = !!((valid_sample_rate?(@traces_sample_rate)) || @traces_sampler) (@enable_tracing != false) && valid_sampler && sending_allowed? end |
#valid_sample_rate?(sample_rate) ⇒ Boolean
658 659 660 661 |
# File 'lib/sentry/configuration.rb', line 658 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
506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 |
# File 'lib/sentry/configuration.rb', line 506 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 |