Ruby on Rails

In Rails, all uncaught exceptions will be automatically reported.

We support Rails 3 and newer.

Installation

Install the SDK via Rubygems by adding it to your Gemfile:

gem "sentry-raven"

Configuration

Open up config/application.rb and configure the DSN, and any other settings you need:

Raven.configure do |config|
  config.dsn = '___DSN___'
end

You’ll also to ensure you’ve disabled anything that would prevent errors from being propagated to the Raven::Rack middleware, like ActionDispatch::ShowExceptions:

config.action_dispatch.show_exceptions = false # this is the default setting in production

If you have added items to Rails’ log filtering, you can also make sure that those items are not sent to Sentry:

# in your application.rb:
config.filter_parameters << :password

# in an initializer, like sentry.rb
Raven.configure do |config|
  config.sanitize_fields = Rails.application.config.filter_parameters.map(&:to_s)
end

If you only want to send events to Sentry in certain environments, you should set config.environments too:

Raven.configure do |config|
  config.dsn = '___DSN___'
  config.environments = ['staging', 'production']
end

Params and sessions

class ApplicationController < ActionController::Base
  before_action :set_raven_context

  private

  def set_raven_context
    Raven.user_context(id: session[:current_user_id]) # or anything else in session
    Raven.extra_context(params: params.to_unsafe_h, url: request.url)
  end
end

Authlogic

When using Authlogic for authentication, you can provide user context by binding to session after_persisting and after_destroy events in user_session.rb:

class UserSession < Authlogic::Session::Base
  # events binding
  after_persisting :raven_set_user_context
  after_destroy :raven_clear_user_context

  def raven_set_user_context
    Raven.user_context({
      'id' => self.user.id,
      'email' => self.user.email,
      'username' => self.user.username
    })
  end

  def raven_clear_user_context
    Raven.user_context({})
  end
end