class Raven::Configuration

Constants

IGNORE_DEFAULT

Attributes

app_dirs_pattern[RW]

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

async[R]

Optional Proc to be used to send events asynchronously.

async?[R]

Optional Proc to be used to send events asynchronously.

catch_debugged_exceptions[RW]

Catch exceptions before they're been processed by ActionDispatch::ShowExceptions or ActionDispatch::DebugExceptions

context_lines[RW]

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

current_environment[R]
encoding[R]

Encoding type for event bodies

environments[RW]

Whitelist of environments that will send notifications to Sentry

excluded_exceptions[RW]

Which exceptions should never be sent

host[RW]
http_adapter[RW]

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

json_adapter[RW]

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

logger[RW]

Logger to use internally

open_timeout[RW]

Timeout waiting for the connection to open in seconds

path[RW]
port[RW]
processors[RW]

Processors to run on data before sending upstream

project_id[RW]

Project ID number to send to the Sentry server

project_root[RW]

Project directory root

proxy[RW]

Proxy information to pass to the HTTP adapter

public_key[RW]

Public key for authentication with the Sentry server

release[RW]
sanitize_credit_cards[RW]

Sanitize values that look like credit card numbers

sanitize_fields[RW]

additional fields to sanitize

scheme[RW]

Accessors for the component parts of the DSN

secret_key[RW]

Secret key for authentication with the Sentry server

send_modules[RW]

Include module versions in reports?

server[R]

Simple server string (setter provided below)

server_name[RW]
should_capture[RW]

Provide a configurable callback to determine event capture

silence_ready[RW]

Silence ready message

ssl[RW]

SSl settings passed direactly to faraday's ssl option

ssl_ca_file[RW]

The path to the SSL certificate file

ssl_verification[RW]

Should the SSL certificate of the server be verified?

tags[RW]

Default tags for events

timeout[RW]

Timeout when waiting for the server to return data in seconds

Public Class Methods

new() click to toggle source
# File lib/raven/configuration.rb, line 116
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 = [Raven::Processor::RemoveCircularReferences, Raven::Processor::UTF8Conversion, Raven::Processor::SanitizeData]
  self.ssl_verification = true
  self.encoding = 'gzip'
  self.timeout = 1
  self.open_timeout = 1
  self.proxy = nil
  self.tags = {}
  self.async = false
  self.catch_debugged_exceptions = true
  self.sanitize_fields = []
  self.sanitize_credit_cards = true
  self.environments = []

  self.release = detect_release
end

Public Instance Methods

[](option) click to toggle source

Allows config options to be read like a hash

@param [Symbol] option Key for a given attribute

# File lib/raven/configuration.rb, line 177
def [](option)
  send(option)
end
async=(value) click to toggle source
# File lib/raven/configuration.rb, line 167
def async=(value)
  raise ArgumentError.new("async must be callable (or false to disable)") unless value == false || value.respond_to?(:call)
  @async = value
end
current_environment=(environment) click to toggle source
# File lib/raven/configuration.rb, line 181
def current_environment=(environment)
  @current_environment = environment.to_s
end
detect_release() click to toggle source
# File lib/raven/configuration.rb, line 200
def detect_release
  detect_release_from_heroku ||
    detect_release_from_capistrano ||
    detect_release_from_git
end
dsn=(value)
Alias for: server=
encoding=(encoding) click to toggle source
# File lib/raven/configuration.rb, line 160
def encoding=(encoding)
  raise Error.new('Unsupported encoding') unless %w(gzip json).include? encoding
  @encoding = encoding
end
log_excluded_environment_message() click to toggle source
# File lib/raven/configuration.rb, line 189
def log_excluded_environment_message
  Raven.logger.debug "Event not sent due to excluded environment: #{current_environment}"
end
send_in_current_environment?() click to toggle source
# File lib/raven/configuration.rb, line 185
def send_in_current_environment?
  !!server && (environments.empty? || environments.include?(current_environment))
end
server=(value) click to toggle source
# File lib/raven/configuration.rb, line 138
def server=(value)
  uri = URI.parse(value)
  uri_path = uri.path.split('/')

  if uri.user
    # DSN-style string
    @project_id = uri_path.pop
    @public_key = uri.user
    @secret_key = uri.password
  end

  @scheme = uri.scheme
  @host = uri.host
  @port = uri.port if uri.port
  @path = uri_path.join('/')

  # For anyone who wants to read the base server string
  @server = "#{@scheme}://#{@host}"
  @server << ":#{@port}" unless @port == { 'http' => 80, 'https' => 443 }[@scheme]
  @server << @path
end
Also aliased as: dsn=
verify!() click to toggle source
# File lib/raven/configuration.rb, line 193
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

Private Instance Methods

detect_release_from_capistrano() click to toggle source
# File lib/raven/configuration.rb, line 212
def detect_release_from_capistrano
  version = File.read(File.join(project_root, 'REVISION')).strip rescue nil

  # Capistrano 3.0 - 3.1.x
  version || File.open(File.join(project_root, '..', 'revisions.log')).to_a.last.strip.sub(/.*as release ([0-9]+).*/, '\1') rescue nil
end
detect_release_from_git() click to toggle source
# File lib/raven/configuration.rb, line 219
def detect_release_from_git
  %x`git rev-parse --short HEAD`.strip if File.directory?(".git") rescue nil
end
detect_release_from_heroku() click to toggle source
# File lib/raven/configuration.rb, line 208
def detect_release_from_heroku
  ENV['HEROKU_SLUG_COMMIT']
end