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
- 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`".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.
-
#before_send ⇒ Object
Optional Proc, called before sending an event to the server/ E.g.: lambda { |event, hint| event } E.g.: lambda { |event, hint| nil } E.g.: lambda { |event, hint| event = ‘a’ event }.
-
#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.
-
#inspect_exception_causes_for_exclusion ⇒ Object
(also: #inspect_exception_causes_for_exclusion?)
Boolean to check nested exceptions when deciding if to exclude.
-
#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.
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
# File 'lib/raven/configuration.rb', line 204 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.inspect_exception_causes_for_exclusion = false 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 self.before_send = 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 |
#before_send ⇒ Object
Optional Proc, called before sending an event to the server/ E.g.: lambda { |event, hint| event } E.g.: lambda { |event, hint| nil } E.g.: lambda { |event, hint|
event[:message] = 'a'
event
}
170 171 172 |
# File 'lib/raven/configuration.rb', line 170 def before_send @before_send 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 #
173 174 175 |
# File 'lib/raven/configuration.rb', line 173 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
46 47 48 |
# File 'lib/raven/configuration.rb', line 46 def faraday_builder @faraday_builder end |
#host ⇒ Object
DSN component - set automatically if DSN provided
39 40 41 |
# File 'lib/raven/configuration.rb', line 39 def host @host end |
#http_adapter ⇒ Object
The Faraday adapter to be used. Will default to Net::HTTP when not set.
42 43 44 |
# File 'lib/raven/configuration.rb', line 42 def http_adapter @http_adapter end |
#inspect_exception_causes_for_exclusion ⇒ Object Also known as: inspect_exception_causes_for_exclusion?
Boolean to check nested exceptions when deciding if to exclude. Defaults to false
35 36 37 |
# File 'lib/raven/configuration.rb', line 35 def inspect_exception_causes_for_exclusion @inspect_exception_causes_for_exclusion 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.
51 52 53 |
# File 'lib/raven/configuration.rb', line 51 def linecache @linecache end |
#logger ⇒ Object
Logger used by Raven. In Rails, this is the Rails logger, otherwise Raven provides its own Raven::Logger.
55 56 57 |
# File 'lib/raven/configuration.rb', line 55 def logger @logger end |
#open_timeout ⇒ Object
Timeout waiting for the Sentry server connection to open in seconds
58 59 60 |
# File 'lib/raven/configuration.rb', line 58 def open_timeout @open_timeout end |
#path ⇒ Object
DSN component - set automatically if DSN provided
61 62 63 |
# File 'lib/raven/configuration.rb', line 61 def path @path end |
#port ⇒ Object
DSN component - set automatically if DSN provided
64 65 66 |
# File 'lib/raven/configuration.rb', line 64 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.
68 69 70 |
# File 'lib/raven/configuration.rb', line 68 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.
72 73 74 |
# File 'lib/raven/configuration.rb', line 72 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.
76 77 78 |
# File 'lib/raven/configuration.rb', line 76 def project_root @project_root end |
#proxy ⇒ Object
Proxy information to pass to the HTTP adapter (via Faraday)
79 80 81 |
# File 'lib/raven/configuration.rb', line 79 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.
83 84 85 |
# File 'lib/raven/configuration.rb', line 83 def public_key @public_key end |
#rails_activesupport_breadcrumbs ⇒ Object
Turns on ActiveSupport breadcrumbs integration
86 87 88 |
# File 'lib/raven/configuration.rb', line 86 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.
92 93 94 |
# File 'lib/raven/configuration.rb', line 92 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.
96 97 98 |
# File 'lib/raven/configuration.rb', line 96 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.
100 101 102 |
# File 'lib/raven/configuration.rb', line 100 def sample_rate @sample_rate end |
#sanitize_credit_cards ⇒ Object
Boolean - sanitize values that look like credit card numbers
103 104 105 |
# File 'lib/raven/configuration.rb', line 103 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.
108 109 110 |
# File 'lib/raven/configuration.rb', line 108 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)
112 113 114 |
# File 'lib/raven/configuration.rb', line 112 def sanitize_fields_excluded @sanitize_fields_excluded end |
#sanitize_http_headers ⇒ Object
Sanitize additional HTTP headers - only Authorization is removed by default.
115 116 117 |
# File 'lib/raven/configuration.rb', line 115 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”
119 120 121 |
# File 'lib/raven/configuration.rb', line 119 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.
This is deprecated and not necessary for newer Sentry installations any more.
125 126 127 |
# File 'lib/raven/configuration.rb', line 125 def secret_key @secret_key end |
#send_modules ⇒ Object
Include module versions in reports - boolean.
128 129 130 |
# File 'lib/raven/configuration.rb', line 128 def send_modules @send_modules end |
#server ⇒ Object
Simple server string - set this to the DSN found on your Sentry settings.
131 132 133 |
# File 'lib/raven/configuration.rb', line 131 def server @server end |
#server_name ⇒ Object
Returns the value of attribute server_name.
133 134 135 |
# File 'lib/raven/configuration.rb', line 133 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 }
139 140 141 |
# File 'lib/raven/configuration.rb', line 139 def should_capture @should_capture end |
#silence_ready ⇒ Object
Silences ready message when true.
142 143 144 |
# File 'lib/raven/configuration.rb', line 142 def silence_ready @silence_ready end |
#ssl ⇒ Object
SSL settings passed directly to Faraday’s ssl option
145 146 147 |
# File 'lib/raven/configuration.rb', line 145 def ssl @ssl end |
#ssl_ca_file ⇒ Object
The path to the SSL certificate file
148 149 150 |
# File 'lib/raven/configuration.rb', line 148 def ssl_ca_file @ssl_ca_file end |
#ssl_verification ⇒ Object
Should the SSL certificate of the server be verified?
151 152 153 |
# File 'lib/raven/configuration.rb', line 151 def ssl_verification @ssl_verification end |
#tags ⇒ Object
Default tags for events. Hash.
154 155 156 |
# File 'lib/raven/configuration.rb', line 154 def @tags end |
#timeout ⇒ Object
Timeout when waiting for the server to return data in seconds.
157 158 159 |
# File 'lib/raven/configuration.rb', line 157 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) } }
161 162 163 |
# File 'lib/raven/configuration.rb', line 161 def transport_failure_callback @transport_failure_callback end |
Instance Method Details
#[](option) ⇒ Object
Allows config options to be read like a hash
297 298 299 |
# File 'lib/raven/configuration.rb', line 297 def [](option) public_send(option) end |
#capture_allowed?(message_or_exc = nil) ⇒ Boolean Also known as: sending_allowed?
305 306 307 308 309 310 311 312 |
# File 'lib/raven/configuration.rb', line 305 def capture_allowed?( = nil) @errors = [] valid? && capture_in_current_environment? && capture_allowed_by_callback?() && sample_allowed? end |
#error_messages ⇒ Object
316 317 318 319 |
# File 'lib/raven/configuration.rb', line 316 def @errors = [errors[0]] + errors[1..-1].map(&:downcase) # fix case of all but first errors.join(", ") end |
#exception_class_allowed?(exc) ⇒ Boolean
326 327 328 329 330 331 332 333 334 335 336 337 |
# File 'lib/raven/configuration.rb', line 326 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 |