Class: Raven::Configuration

Inherits:
Object
  • Object
show all
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 =
[
  Raven::Processor::RemoveCircularReferences,
  Raven::Processor::UTF8Conversion,
  Raven::Processor::SanitizeData,
  Raven::Processor::Cookies,
  Raven::Processor::PostData,
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/raven/configuration.rb', line 131

def initialize
  self.server = ENV['SENTRY_DSN'] if ENV['SENTRY_DSN']
  @context_lines = 3
  self.current_environment = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'default'
  self.send_modules = true
  self.excluded_exceptions = IGNORE_DEFAULT.dup
  self.processors = DEFAULT_PROCESSORS.dup
  self.ssl_verification = true
  self.encoding = 'gzip'
  self.timeout = 1
  self.open_timeout = 1
  self.proxy = nil
  self.tags = {}
  self.async = false
  self.rails_report_rescued_exceptions = true
  self.transport_failure_callback = false
  self.sanitize_fields = []
  self.sanitize_credit_cards = true
  self.environments = []

  self.release = detect_release

  # Try to resolve the hostname to an FQDN, but fall back to whatever the load name is
  self.server_name = Socket.gethostname
  self.server_name = Socket.gethostbyname(hostname).first rescue server_name
end

Instance Attribute Details

#app_dirs_patternObject

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)/



93
94
95
# File 'lib/raven/configuration.rb', line 93

def app_dirs_pattern
  @app_dirs_pattern
end

#asyncObject Also known as: async?

Optional Proc to be used to send events asynchronously.



85
86
87
# File 'lib/raven/configuration.rb', line 85

def async
  @async
end

#catch_debugged_exceptionsObject

Deprecated accessor



101
102
103
# File 'lib/raven/configuration.rb', line 101

def catch_debugged_exceptions
  @catch_debugged_exceptions
end

#context_linesObject

Number of lines of code context to capture, or nil for none



37
38
39
# File 'lib/raven/configuration.rb', line 37

def context_lines
  @context_lines
end

#current_environmentObject

Returns the value of attribute current_environment.



69
70
71
# File 'lib/raven/configuration.rb', line 69

def current_environment
  @current_environment
end

#encodingObject

Encoding type for event bodies



28
29
30
# File 'lib/raven/configuration.rb', line 28

def encoding
  @encoding
end

#environmentsObject

Whitelist of environments that will send notifications to Sentry



40
41
42
# File 'lib/raven/configuration.rb', line 40

def environments
  @environments
end

#excluded_exceptionsObject

Which exceptions should never be sent



46
47
48
# File 'lib/raven/configuration.rb', line 46

def excluded_exceptions
  @excluded_exceptions
end

#hostObject

Returns the value of attribute host.



17
18
19
# File 'lib/raven/configuration.rb', line 17

def host
  @host
end

#http_adapterObject

The Faraday adapter to be used. Will default to Net::HTTP when not set.



72
73
74
# File 'lib/raven/configuration.rb', line 72

def http_adapter
  @http_adapter
end

#json_adapterObject

DEPRECATED: This option is now ignored as we use our own adapter.



79
80
81
# File 'lib/raven/configuration.rb', line 79

def json_adapter
  @json_adapter
end

#loggerObject

Logger to use internally



31
32
33
# File 'lib/raven/configuration.rb', line 31

def logger
  @logger
end

#open_timeoutObject

Timeout waiting for the connection to open in seconds



55
56
57
# File 'lib/raven/configuration.rb', line 55

def open_timeout
  @open_timeout
end

#pathObject

Returns the value of attribute path.



19
20
21
# File 'lib/raven/configuration.rb', line 19

def path
  @path
end

#portObject

Returns the value of attribute port.



18
19
20
# File 'lib/raven/configuration.rb', line 18

def port
  @port
end

#processorsObject

Processors to run on data before sending upstream



49
50
51
# File 'lib/raven/configuration.rb', line 49

def processors
  @processors
end

#project_idObject

Project ID number to send to the Sentry server



22
23
24
# File 'lib/raven/configuration.rb', line 22

def project_id
  @project_id
end

#project_rootObject

Project directory root



25
26
27
# File 'lib/raven/configuration.rb', line 25

def project_root
  @project_root
end

#proxyObject

Proxy information to pass to the HTTP adapter



67
68
69
# File 'lib/raven/configuration.rb', line 67

def proxy
  @proxy
end

#public_keyObject

Public key for authentication with the Sentry server



10
11
12
# File 'lib/raven/configuration.rb', line 10

def public_key
  @public_key
end

#rails_report_rescued_exceptionsObject

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.



99
100
101
# File 'lib/raven/configuration.rb', line 99

def rails_report_rescued_exceptions
  @rails_report_rescued_exceptions
end

#releaseObject

Returns the value of attribute release.



76
77
78
# File 'lib/raven/configuration.rb', line 76

def release
  @release
end

#sanitize_credit_cardsObject

Sanitize values that look like credit card numbers



110
111
112
# File 'lib/raven/configuration.rb', line 110

def sanitize_credit_cards
  @sanitize_credit_cards
end

#sanitize_fieldsObject

additional fields to sanitize



107
108
109
# File 'lib/raven/configuration.rb', line 107

def sanitize_fields
  @sanitize_fields
end

#schemeObject

Accessors for the component parts of the DSN



16
17
18
# File 'lib/raven/configuration.rb', line 16

def scheme
  @scheme
end

#secret_keyObject

Secret key for authentication with the Sentry server



13
14
15
# File 'lib/raven/configuration.rb', line 13

def secret_key
  @secret_key
end

#send_modulesObject

Include module versions in reports?



43
44
45
# File 'lib/raven/configuration.rb', line 43

def send_modules
  @send_modules
end

#serverObject

Simple server string (setter provided below)



7
8
9
# File 'lib/raven/configuration.rb', line 7

def server
  @server
end

#server_nameObject

Returns the value of attribute server_name.



74
75
76
# File 'lib/raven/configuration.rb', line 74

def server_name
  @server_name
end

#should_captureObject

Provide a configurable callback to determine event capture



104
105
106
# File 'lib/raven/configuration.rb', line 104

def should_capture
  @should_capture
end

#silence_readyObject

Silence ready message



34
35
36
# File 'lib/raven/configuration.rb', line 34

def silence_ready
  @silence_ready
end

#sslObject

SSl settings passed direactly to faraday’s ssl option



64
65
66
# File 'lib/raven/configuration.rb', line 64

def ssl
  @ssl
end

#ssl_ca_fileObject

The path to the SSL certificate file



61
62
63
# File 'lib/raven/configuration.rb', line 61

def ssl_ca_file
  @ssl_ca_file
end

#ssl_verificationObject

Should the SSL certificate of the server be verified?



58
59
60
# File 'lib/raven/configuration.rb', line 58

def ssl_verification
  @ssl_verification
end

#tagsObject

Default tags for events



82
83
84
# File 'lib/raven/configuration.rb', line 82

def tags
  @tags
end

#timeoutObject

Timeout when waiting for the server to return data in seconds



52
53
54
# File 'lib/raven/configuration.rb', line 52

def timeout
  @timeout
end

#transport_failure_callbackObject

Optional Proc, called when the Sentry server cannot be contacted for any reason



88
89
90
# File 'lib/raven/configuration.rb', line 88

def transport_failure_callback
  @transport_failure_callback
end

Instance Method Details

#[](option) ⇒ Object

Allows config options to be read like a hash

Parameters:

  • option (Symbol)

    Key for a given attribute



202
203
204
# File 'lib/raven/configuration.rb', line 202

def [](option)
  send(option)
end

#detect_releaseObject



225
226
227
228
229
# File 'lib/raven/configuration.rb', line 225

def detect_release
  detect_release_from_heroku ||
    detect_release_from_capistrano ||
    detect_release_from_git
end

#log_excluded_environment_messageObject



214
215
216
# File 'lib/raven/configuration.rb', line 214

def log_excluded_environment_message
  Raven.logger.debug "Event not sent due to excluded environment: #{current_environment}"
end

#send_in_current_environment?Boolean

Returns:

  • (Boolean)


210
211
212
# File 'lib/raven/configuration.rb', line 210

def send_in_current_environment?
  !!server && (environments.empty? || environments.include?(current_environment))
end

#verify!Object

Raises:



218
219
220
221
222
223
# File 'lib/raven/configuration.rb', line 218

def verify!
  raise Error.new('No server specified') unless server
  raise Error.new('No public key specified') unless public_key
  raise Error.new('No secret key specified') unless secret_key
  raise Error.new('No project ID specified') unless project_id
end