Setting Up and Testing Rails Exception Notification

The Exception Notification gem is a great addition to any existing app for notifying you with an email for every error that occurs. This guide will cover the installation and set-up of the gem in a Rails application.


The Exception Notification Ruby gem is a great addition to any existing Rack or Rails application for notifying you with an email for every error that occurs, which you would otherwise not know about.

The gem also has build-in notifiers to send its notifications to other services like:

  • Campfire
  • Datadog
  • HipChat
  • IRC
  • Slack
  • Mattermost
  • Microsoft Teams
  • Amazon SNS
  • Google Chat
  • WebHook

Note: Only the email notifier will be covered in this post. Check out the gem’s notifier documentation for additional implementation instructions.

This guide will cover the installation and setting-up on the gem in a Rails application.

Requirements

  • Ruby 2.0 or greater
  • Rails 4.0 or greater, Sinatra or another Rack-based application

Getting Set Up

Add the following to your application’s Gemfile:

gem 'exception_notification'

Exception Notification can run in any environment you like, but usually you would only want it running in production. Add the following in your config/environments/production.rb:

Rails.application.config.middleware.use ExceptionNotification::Rack,
  email: {
    email_prefix: '[PREFIX] ', # Default: [ERROR]
    sender_address: %{'notifier' <[email protected]>},
    exception_recipients: %w{[email protected]}
  }

Tip: The email_prefix: option above is for prefixing the email subject lines. This option is optional and if not defined, will default to [ERROR].

Done!

Include Custom Data in Notifications

For convenience, you can configure Exception Notification to include some extra values in its notifications, e.g: current_user. This can be achieved by adding the following to app/controllers/application_controller.rb:

class ApplicationController < ActionController::Base
  before_filter :prepare_exception_notifier

  private

  def prepare_exception_notifier
    request.env['exception_notifier.exception_data'] = {
      current_user: current_user
    }
  end
end

Testing Notifications

Checking to make sure everything is working is easy.

Add the following to config/routes.rb:

# Route for testing Exception Notification configuration
get 'test_exception_notifier' => 'application#test_exception_notifier'

Add the following to app/controllers/application_controller.rb:

def test_exception_notifier
  raise 'Test Exception. This is a test exception to make sure the exception notifier is working.'
end

Now you can navigate to http://domain.com/test_exception_notifier to trigger your test exception.

Happy debugging!