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' ].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
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.
-
#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.
-
#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_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?)
- #detect_release ⇒ Object
- #error_messages ⇒ Object
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/raven/configuration.rb', line 172 def initialize self.async = false self.context_lines = 3 self.current_environment = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'default' 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.proxy = nil self. = false self.rails_report_rescued_exceptions = true self.release = detect_release self.sanitize_credit_cards = true self.sanitize_fields = [] self.sanitize_http_headers = [] self.send_modules = true self.server = ENV['SENTRY_DSN'] if ENV['SENTRY_DSN'] self.server_name = resolve_hostname 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 #
146 147 148 |
# File 'lib/raven/configuration.rb', line 146 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 |
#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.
43 44 45 |
# File 'lib/raven/configuration.rb', line 43 def linecache @linecache end |
#logger ⇒ Object
Logger used by Raven. In Rails, this is the Rails logger, otherwise Raven provides its own Raven::Logger.
47 48 49 |
# File 'lib/raven/configuration.rb', line 47 def logger @logger end |
#open_timeout ⇒ Object
Timeout waiting for the Sentry server connection to open in seconds
50 51 52 |
# File 'lib/raven/configuration.rb', line 50 def open_timeout @open_timeout end |
#path ⇒ Object
DSN component - set automatically if DSN provided
53 54 55 |
# File 'lib/raven/configuration.rb', line 53 def path @path end |
#port ⇒ Object
DSN component - set automatically if DSN provided
56 57 58 |
# File 'lib/raven/configuration.rb', line 56 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.
60 61 62 |
# File 'lib/raven/configuration.rb', line 60 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.
64 65 66 |
# File 'lib/raven/configuration.rb', line 64 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.
68 69 70 |
# File 'lib/raven/configuration.rb', line 68 def project_root @project_root end |
#proxy ⇒ Object
Proxy information to pass to the HTTP adapter (via Faraday)
71 72 73 |
# File 'lib/raven/configuration.rb', line 71 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.
75 76 77 |
# File 'lib/raven/configuration.rb', line 75 def public_key @public_key end |
#rails_activesupport_breadcrumbs ⇒ Object
Turns on ActiveSupport breadcrumbs integration
78 79 80 |
# File 'lib/raven/configuration.rb', line 78 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.
84 85 86 |
# File 'lib/raven/configuration.rb', line 84 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.
88 89 90 |
# File 'lib/raven/configuration.rb', line 88 def release @release end |
#sanitize_credit_cards ⇒ Object
Boolean - sanitize values that look like credit card numbers
91 92 93 |
# File 'lib/raven/configuration.rb', line 91 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.
96 97 98 |
# File 'lib/raven/configuration.rb', line 96 def sanitize_fields @sanitize_fields end |
#sanitize_http_headers ⇒ Object
Sanitize additional HTTP headers - only Authorization is removed by default.
99 100 101 |
# File 'lib/raven/configuration.rb', line 99 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”
103 104 105 |
# File 'lib/raven/configuration.rb', line 103 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.
107 108 109 |
# File 'lib/raven/configuration.rb', line 107 def secret_key @secret_key end |
#send_modules ⇒ Object
Include module versions in reports - boolean.
110 111 112 |
# File 'lib/raven/configuration.rb', line 110 def send_modules @send_modules end |
#server ⇒ Object
Simple server string - set this to the DSN found on your Sentry settings.
113 114 115 |
# File 'lib/raven/configuration.rb', line 113 def server @server end |
#server_name ⇒ Object
Returns the value of attribute server_name.
115 116 117 |
# File 'lib/raven/configuration.rb', line 115 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 }
121 122 123 |
# File 'lib/raven/configuration.rb', line 121 def should_capture @should_capture end |
#silence_ready ⇒ Object
Silences ready message when true.
124 125 126 |
# File 'lib/raven/configuration.rb', line 124 def silence_ready @silence_ready end |
#ssl ⇒ Object
SSL settings passed directly to Faraday’s ssl option
127 128 129 |
# File 'lib/raven/configuration.rb', line 127 def ssl @ssl end |
#ssl_ca_file ⇒ Object
The path to the SSL certificate file
130 131 132 |
# File 'lib/raven/configuration.rb', line 130 def ssl_ca_file @ssl_ca_file end |
#ssl_verification ⇒ Object
Should the SSL certificate of the server be verified?
133 134 135 |
# File 'lib/raven/configuration.rb', line 133 def ssl_verification @ssl_verification end |
#tags ⇒ Object
Default tags for events. Hash.
136 137 138 |
# File 'lib/raven/configuration.rb', line 136 def @tags end |
#timeout ⇒ Object
Timeout when waiting for the server to return data in seconds.
139 140 141 |
# File 'lib/raven/configuration.rb', line 139 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) } }
143 144 145 |
# File 'lib/raven/configuration.rb', line 143 def transport_failure_callback @transport_failure_callback end |
Instance Method Details
#[](option) ⇒ Object
Allows config options to be read like a hash
253 254 255 |
# File 'lib/raven/configuration.rb', line 253 def [](option) public_send(option) end |
#capture_allowed?(message_or_exc = nil) ⇒ Boolean Also known as: sending_allowed?
261 262 263 264 265 266 267 |
# File 'lib/raven/configuration.rb', line 261 def capture_allowed?( = nil) @errors = [] valid? && capture_in_current_environment? && capture_allowed_by_callback?() end |
#detect_release ⇒ Object
281 282 283 284 285 |
# File 'lib/raven/configuration.rb', line 281 def detect_release detect_release_from_git || detect_release_from_capistrano || detect_release_from_heroku end |
#error_messages ⇒ Object
271 272 273 274 |
# File 'lib/raven/configuration.rb', line 271 def @errors = [errors[0]] + errors[1..-1].map(&:downcase) # fix case of all but first errors.join(", ") end |