Class: Raven::Configuration
- Inherits:
-
Object
- Object
- Raven::Configuration
- Defined in:
- lib/raven/configuration.rb
Constant Summary collapse
- IGNORE_DEFAULT =
[ 'AbstractController::ActionNotFound', 'ActionController::InvalidAuthenticityToken', 'ActionController::RoutingError', 'ActionController::UnknownAction', 'ActiveRecord::RecordNotFound', 'CGI::Session::CookieStore::TamperedWithCookie', 'Mongoid::Errors::DocumentNotFound', 'Sinatra::NotFound', 'ActiveJob::DeserializationError' ].freeze
- DEFAULT_PROCESSORS =
Note the order - we have to remove circular references and bad characters before passing to other processors.
[ Raven::Processor::RemoveCircularReferences, Raven::Processor::UTF8Conversion, Raven::Processor::SanitizeData, Raven::Processor::Cookies, Raven::Processor::PostData, Raven::Processor::HTTPHeaders ].freeze
- LOG_PREFIX =
"** [Raven] ".freeze
- MODULE_SEPARATOR =
"::".freeze
Instance Attribute Summary collapse
-
#app_dirs_pattern ⇒ Object
Directories to be recognized as part of your app.
-
#async ⇒ Object
(also: #async?)
Provide an object that responds to ‘call` to send events asynchronously.
-
#context_lines ⇒ Object
Number of lines of code context to capture, or nil for none.
-
#current_environment ⇒ Object
RACK_ENV by default.
-
#encoding ⇒ Object
Encoding type for event bodies.
-
#environments ⇒ Object
Whitelist of environments that will send notifications to Sentry.
-
#errors ⇒ Object
readonly
Errors object - an Array that contains error messages.
-
#exclude_loggers ⇒ Object
Logger ‘progname’s to exclude from breadcrumbs.
-
#excluded_exceptions ⇒ Object
Array of exception classes that should never be sent.
-
#faraday_builder ⇒ Object
A Proc yeilding the faraday builder allowing for further configuration of the faraday adapter.
-
#host ⇒ Object
DSN component - set automatically if DSN provided.
-
#http_adapter ⇒ Object
The Faraday adapter to be used.
-
#linecache ⇒ Object
You may provide your own LineCache for matching paths with source files.
-
#logger ⇒ Object
Logger used by Raven.
-
#open_timeout ⇒ Object
Timeout waiting for the Sentry server connection to open in seconds.
-
#path ⇒ Object
DSN component - set automatically if DSN provided.
-
#port ⇒ Object
DSN component - set automatically if DSN provided.
-
#processors ⇒ Object
Processors to run on data before sending upstream.
-
#project_id ⇒ Object
Project ID number to send to the Sentry server If you provide a DSN, this will be set automatically.
-
#project_root ⇒ Object
Project directory root for in_app detection.
-
#proxy ⇒ Object
Proxy information to pass to the HTTP adapter (via Faraday).
-
#public_key ⇒ Object
Public key for authentication with the Sentry server If you provide a DSN, this will be set automatically.
-
#rails_activesupport_breadcrumbs ⇒ Object
Turns on ActiveSupport breadcrumbs integration.
-
#rails_report_rescued_exceptions ⇒ Object
Rails catches exceptions in the ActionDispatch::ShowExceptions or ActionDispatch::DebugExceptions middlewares, depending on the environment.
-
#release ⇒ Object
Release tag to be passed with every event sent to Sentry.
-
#sample_rate ⇒ Object
The sampling factor to apply to events.
-
#sanitize_credit_cards ⇒ Object
Boolean - sanitize values that look like credit card numbers.
-
#sanitize_fields ⇒ Object
By default, Sentry censors Hash values when their keys match things like “secret”, “password”, etc.
-
#sanitize_fields_excluded ⇒ Object
If you’re sure you want to override the default sanitization values, you can add to them to an array of Strings here, e.g.
-
#sanitize_http_headers ⇒ Object
Sanitize additional HTTP headers - only Authorization is removed by default.
-
#scheme ⇒ Object
DSN component - set automatically if DSN provided.
-
#secret_key ⇒ Object
Secret key for authentication with the Sentry server If you provide a DSN, this will be set automatically.
-
#send_modules ⇒ Object
Include module versions in reports - boolean.
-
#server ⇒ Object
Simple server string - set this to the DSN found on your Sentry settings.
-
#server_name ⇒ Object
Returns the value of attribute server_name.
-
#should_capture ⇒ Object
Provide a configurable callback to determine event capture.
-
#silence_ready ⇒ Object
Silences ready message when true.
-
#ssl ⇒ Object
SSL settings passed directly to Faraday’s ssl option.
-
#ssl_ca_file ⇒ Object
The path to the SSL certificate file.
-
#ssl_verification ⇒ Object
Should the SSL certificate of the server be verified?.
-
#tags ⇒ Object
Default tags for events.
-
#timeout ⇒ Object
Timeout when waiting for the server to return data in seconds.
-
#transport_failure_callback ⇒ Object
Optional Proc, called when the Sentry server cannot be contacted for any reason E.g.
Instance Method Summary collapse
-
#[](option) ⇒ Object
Allows config options to be read like a hash.
- #capture_allowed?(message_or_exc = nil) ⇒ Boolean (also: #sending_allowed?)
- #error_messages ⇒ Object
- #exception_class_allowed?(exc) ⇒ Boolean
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/raven/configuration.rb', line 186 def initialize self.async = false self.context_lines = 3 self.current_environment = current_environment_from_env self.encoding = 'gzip' self.environments = [] self.exclude_loggers = [] self.excluded_exceptions = IGNORE_DEFAULT.dup self.linecache = ::Raven::LineCache.new self.logger = ::Raven::Logger.new(STDOUT) self.open_timeout = 1 self.processors = DEFAULT_PROCESSORS.dup self.project_root = detect_project_root self. = false self.rails_report_rescued_exceptions = true self.release = detect_release self.sample_rate = 1.0 self.sanitize_credit_cards = true self.sanitize_fields = [] self.sanitize_fields_excluded = [] self.sanitize_http_headers = [] self.send_modules = true self.server = ENV['SENTRY_DSN'] self.server_name = server_name_from_env self.should_capture = false self.ssl_verification = true self. = {} self.timeout = 2 self.transport_failure_callback = false end |
Instance Attribute Details
#app_dirs_pattern ⇒ Object
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)/
8 9 10 |
# File 'lib/raven/configuration.rb', line 8 def app_dirs_pattern @app_dirs_pattern end |
#async ⇒ Object Also known as: async?
Provide an object that responds to ‘call` to send events asynchronously. E.g.: lambda { |event| Thread.new { Raven.send_event(event) } }
12 13 14 |
# File 'lib/raven/configuration.rb', line 12 def async @async end |
#context_lines ⇒ Object
Number of lines of code context to capture, or nil for none
16 17 18 |
# File 'lib/raven/configuration.rb', line 16 def context_lines @context_lines end |
#current_environment ⇒ Object
RACK_ENV by default.
19 20 21 |
# File 'lib/raven/configuration.rb', line 19 def current_environment @current_environment end |
#encoding ⇒ Object
Encoding type for event bodies. Must be :json or :gzip.
22 23 24 |
# File 'lib/raven/configuration.rb', line 22 def encoding @encoding end |
#environments ⇒ Object
Whitelist of environments that will send notifications to Sentry. Array of Strings.
25 26 27 |
# File 'lib/raven/configuration.rb', line 25 def environments @environments end |
#errors ⇒ Object (readonly)
Errors object - an Array that contains error messages. See #
158 159 160 |
# File 'lib/raven/configuration.rb', line 158 def errors @errors end |
#exclude_loggers ⇒ Object
Logger ‘progname’s to exclude from breadcrumbs
28 29 30 |
# File 'lib/raven/configuration.rb', line 28 def exclude_loggers @exclude_loggers end |
#excluded_exceptions ⇒ Object
Array of exception classes that should never be sent. See IGNORE_DEFAULT. You should probably append to this rather than overwrite it.
32 33 34 |
# File 'lib/raven/configuration.rb', line 32 def excluded_exceptions @excluded_exceptions end |
#faraday_builder ⇒ Object
A Proc yeilding the faraday builder allowing for further configuration of the faraday adapter
42 43 44 |
# File 'lib/raven/configuration.rb', line 42 def faraday_builder @faraday_builder end |
#host ⇒ Object
DSN component - set automatically if DSN provided
35 36 37 |
# File 'lib/raven/configuration.rb', line 35 def host @host end |
#http_adapter ⇒ Object
The Faraday adapter to be used. Will default to Net::HTTP when not set.
38 39 40 |
# File 'lib/raven/configuration.rb', line 38 def http_adapter @http_adapter end |
#linecache ⇒ Object
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. See Raven::LineCache for the required interface you must implement.
47 48 49 |
# File 'lib/raven/configuration.rb', line 47 def linecache @linecache end |
#logger ⇒ Object
Logger used by Raven. In Rails, this is the Rails logger, otherwise Raven provides its own Raven::Logger.
51 52 53 |
# File 'lib/raven/configuration.rb', line 51 def logger @logger end |
#open_timeout ⇒ Object
Timeout waiting for the Sentry server connection to open in seconds
54 55 56 |
# File 'lib/raven/configuration.rb', line 54 def open_timeout @open_timeout end |
#path ⇒ Object
DSN component - set automatically if DSN provided
57 58 59 |
# File 'lib/raven/configuration.rb', line 57 def path @path end |
#port ⇒ Object
DSN component - set automatically if DSN provided
60 61 62 |
# File 'lib/raven/configuration.rb', line 60 def port @port end |
#processors ⇒ Object
Processors to run on data before sending upstream. See DEFAULT_PROCESSORS. You should probably append to this rather than overwrite it.
64 65 66 |
# File 'lib/raven/configuration.rb', line 64 def processors @processors end |
#project_id ⇒ Object
Project ID number to send to the Sentry server If you provide a DSN, this will be set automatically.
68 69 70 |
# File 'lib/raven/configuration.rb', line 68 def project_id @project_id end |
#project_root ⇒ Object
Project directory root for in_app detection. Could be Rails root, etc. Set automatically for Rails.
72 73 74 |
# File 'lib/raven/configuration.rb', line 72 def project_root @project_root end |
#proxy ⇒ Object
Proxy information to pass to the HTTP adapter (via Faraday)
75 76 77 |
# File 'lib/raven/configuration.rb', line 75 def proxy @proxy end |
#public_key ⇒ Object
Public key for authentication with the Sentry server If you provide a DSN, this will be set automatically.
79 80 81 |
# File 'lib/raven/configuration.rb', line 79 def public_key @public_key end |
#rails_activesupport_breadcrumbs ⇒ Object
Turns on ActiveSupport breadcrumbs integration
82 83 84 |
# File 'lib/raven/configuration.rb', line 82 def @rails_activesupport_breadcrumbs end |
#rails_report_rescued_exceptions ⇒ Object
Rails catches exceptions in the ActionDispatch::ShowExceptions or ActionDispatch::DebugExceptions middlewares, depending on the environment. When ‘rails_report_rescued_exceptions` is true (it is by default), Raven will report exceptions even when they are rescued by these middlewares.
88 89 90 |
# File 'lib/raven/configuration.rb', line 88 def rails_report_rescued_exceptions @rails_report_rescued_exceptions end |
#release ⇒ Object
Release tag to be passed with every event sent to Sentry. We automatically try to set this to a git SHA or Capistrano release.
92 93 94 |
# File 'lib/raven/configuration.rb', line 92 def release @release end |
#sample_rate ⇒ Object
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.
96 97 98 |
# File 'lib/raven/configuration.rb', line 96 def sample_rate @sample_rate end |
#sanitize_credit_cards ⇒ Object
Boolean - sanitize values that look like credit card numbers
99 100 101 |
# File 'lib/raven/configuration.rb', line 99 def sanitize_credit_cards @sanitize_credit_cards end |
#sanitize_fields ⇒ Object
By default, Sentry censors Hash values when their keys match things like “secret”, “password”, etc. Provide an array of Strings that, when matched in a hash key, will be censored and not sent to Sentry.
104 105 106 |
# File 'lib/raven/configuration.rb', line 104 def sanitize_fields @sanitize_fields end |
#sanitize_fields_excluded ⇒ Object
If you’re sure you want to override the default sanitization values, you can add to them to an array of Strings here, e.g. %w(authorization password)
108 109 110 |
# File 'lib/raven/configuration.rb', line 108 def sanitize_fields_excluded @sanitize_fields_excluded end |
#sanitize_http_headers ⇒ Object
Sanitize additional HTTP headers - only Authorization is removed by default.
111 112 113 |
# File 'lib/raven/configuration.rb', line 111 def sanitize_http_headers @sanitize_http_headers end |
#scheme ⇒ Object
DSN component - set automatically if DSN provided. Otherwise, can be one of “http”, “https”, or “dummy”
115 116 117 |
# File 'lib/raven/configuration.rb', line 115 def scheme @scheme end |
#secret_key ⇒ Object
Secret key for authentication with the Sentry server If you provide a DSN, this will be set automatically.
119 120 121 |
# File 'lib/raven/configuration.rb', line 119 def secret_key @secret_key end |
#send_modules ⇒ Object
Include module versions in reports - boolean.
122 123 124 |
# File 'lib/raven/configuration.rb', line 122 def send_modules @send_modules end |
#server ⇒ Object
Simple server string - set this to the DSN found on your Sentry settings.
125 126 127 |
# File 'lib/raven/configuration.rb', line 125 def server @server end |
#server_name ⇒ Object
Returns the value of attribute server_name.
127 128 129 |
# File 'lib/raven/configuration.rb', line 127 def server_name @server_name end |
#should_capture ⇒ Object
Provide a configurable callback to determine event capture. Note that the object passed into the block will be a String (messages) or an exception. e.g. lambda { |exc_or_msg| exc_or_msg.some_attr == false }
133 134 135 |
# File 'lib/raven/configuration.rb', line 133 def should_capture @should_capture end |
#silence_ready ⇒ Object
Silences ready message when true.
136 137 138 |
# File 'lib/raven/configuration.rb', line 136 def silence_ready @silence_ready end |
#ssl ⇒ Object
SSL settings passed directly to Faraday’s ssl option
139 140 141 |
# File 'lib/raven/configuration.rb', line 139 def ssl @ssl end |
#ssl_ca_file ⇒ Object
The path to the SSL certificate file
142 143 144 |
# File 'lib/raven/configuration.rb', line 142 def ssl_ca_file @ssl_ca_file end |
#ssl_verification ⇒ Object
Should the SSL certificate of the server be verified?
145 146 147 |
# File 'lib/raven/configuration.rb', line 145 def ssl_verification @ssl_verification end |
#tags ⇒ Object
Default tags for events. Hash.
148 149 150 |
# File 'lib/raven/configuration.rb', line 148 def @tags end |
#timeout ⇒ Object
Timeout when waiting for the server to return data in seconds.
151 152 153 |
# File 'lib/raven/configuration.rb', line 151 def timeout @timeout end |
#transport_failure_callback ⇒ Object
Optional Proc, called when the Sentry server cannot be contacted for any reason E.g. lambda { |event| Thread.new { MyJobProcessor.send_email(event) } }
155 156 157 |
# File 'lib/raven/configuration.rb', line 155 def transport_failure_callback @transport_failure_callback end |
Instance Method Details
#[](option) ⇒ Object
Allows config options to be read like a hash
270 271 272 |
# File 'lib/raven/configuration.rb', line 270 def [](option) public_send(option) end |
#capture_allowed?(message_or_exc = nil) ⇒ Boolean Also known as: sending_allowed?
278 279 280 281 282 283 284 285 |
# File 'lib/raven/configuration.rb', line 278 def capture_allowed?( = nil) @errors = [] valid? && capture_in_current_environment? && capture_allowed_by_callback?() && sample_allowed? end |
#error_messages ⇒ Object
289 290 291 292 |
# File 'lib/raven/configuration.rb', line 289 def @errors = [errors[0]] + errors[1..-1].map(&:downcase) # fix case of all but first errors.join(", ") end |
#exception_class_allowed?(exc) ⇒ Boolean
299 300 301 302 303 304 305 306 307 308 309 310 |
# File 'lib/raven/configuration.rb', line 299 def exception_class_allowed?(exc) if exc.is_a?(Raven::Error) # Try to prevent error reporting loops logger.debug "Refusing to capture Raven error: #{exc.inspect}" false elsif excluded_exception?(exc) logger.debug "User excluded error: #{exc.inspect}" false else true end end |