Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
A

airbrake

> 后端框架
Open source

The official Airbrake library for Ruby applications

986 stars0 likes1 views
WebsiteGitHub

About

The official Airbrake library for Ruby applications

Airbrake

  • Airbrake README
  • Airbrake Ruby README
  • YARD API documentation

Introduction

Airbrake is an online tool that provides robust exception tracking in any of your Ruby applications. In doing so, it allows you to easily review errors, tie an error to an individual piece of code, and trace the cause back to recent changes. The Airbrake dashboard provides easy categorization, searching, and prioritization of exceptions so that when errors occur, your team can quickly determine the root cause.

Key features

This library is built on top of Airbrake Ruby. The difference between Airbrake and Airbrake Ruby is that the airbrake gem is just a collection of integrations with frameworks or other libraries. The airbrake-ruby gem is the core library that performs exception sending and other heavy lifting.

Normally, you just need to depend on this gem, select the integration you are interested in and follow the instructions for it. If you develop a pure frameworkless Ruby application or embed Ruby and don't need any of the listed integrations, you can depend on the airbrake-ruby gem and ignore this gem entirely.

The list of integrations that are available in this gem includes:

  • Heroku support (as an add-on)
  • Web frameworks
    • Rails
    • Sinatra
    • Rack applications
  • Job processing libraries
    • ActiveJob
    • Resque
    • Sidekiq
    • DelayedJob
    • Shoryuken
    • Sneakers
  • Other libraries
    • ActionCable
    • Rake
    • Logger
  • Plain Ruby scripts

Deployment tracking:

  • Using Capistrano
  • Using the Rake task

Installation

Bundler

Add the Airbrake gem to your Gemfile:

gem 'airbrake'

Manual

Invoke the following command from your terminal:

gem install airbrake

Configuration

Rails

Integration

To integrate Airbrake with your Rails application, you need to know your project id and project key. Set AIRBRAKE_PROJECT_ID & AIRBRAKE_PROJECT_KEY environment variables with your project's values and generate the Airbrake config:

export AIRBRAKE_PROJECT_ID=
export AIRBRAKE_PROJECT_KEY=

rails g airbrake

Heroku add-on users can omit specifying the key and the id. Heroku add-on's environment variables will be used (Heroku add-on docs):

rails g airbrake

This command will generate the Airbrake configuration file under config/initializers/airbrake.rb. Make sure that this file is checked into your version control system. This is enough to start Airbraking.

In order to configure the library according to your needs, open up the file and edit it. The full list of supported configuration options is available online.

To test the integration, invoke a special Rake task that we provide:

rake airbrake:test

In case of success, a test exception should appear in your dashboard.

The notify_airbrake controller helpers

The Airbrake gem defines two helper methods available inside Rails controllers: #notify_airbrake and #notify_airbrake_sync. If you want to notify Airbrake from your controllers manually, it's usually a good idea to prefer them over Airbrake.notify, because they automatically add information from the Rack environment to notices. #notify_airbrake is asynchronous, while #notify_airbrake_sync is synchronous (waits for responses from the server and returns them). The list of accepted arguments is identical to Airbrake.notify.

Additional features: user reporting, sophisticated API

The library sends all uncaught exceptions automatically, attaching the maximum possible amount information that can help you to debug errors. The Airbrake gem is capable of reporting information about the currently logged in user (id, email, username, etc.), if you use an authentication library such as Devise. The library also provides a special API for manual error reporting. The description of the API is available online.

Automatic integration with Rake tasks and Rails runner

Additionally, the Rails integration offers automatic exception reporting in any Rake tasks[link] and Rails runner.

Integration with filter_parameters

If you want to reuse Rails.application.config.filter_parameters in Airbrake you can configure your notifier the following way:

# config/initializers/airbrake.rb
Airbrake.configure do |c|
  c.blocklist_keys = Rails.application.config.filter_parameters
end

There are a few important details:

  1. You must load filter_parameter_logging.rb before the Airbrake config
  2. If you use Lambdas to configure filter_parameters, you need to convert them to Procs. Otherwise you will get ArgumentError
  3. If you use Procs to configure filter_parameters, the procs must return an Array of keys compatible with the Airbrake allowlist/blocklist option (String, Symbol, Regexp)

Consult the example application, which was created to show how to configure filter_parameters.

filter_parameters dot notation warning

The dot notation introduced in rails/pull/13897 for filter_parameters (e.g. a key like credit_card.code) is unsupported for performance reasons. Instead, simply specify the code key. If you have a strong opinion on this, leave a comment in the dedicated issue.

Logging

In new Rails apps, by default, all the Airbrake logs are written into log/airbrake.log. In older versions we used to write to wherever Rails.logger writes. If you wish to upgrade your app to the new behaviour, please configure your logger the following way:

c.logger = Airbrake::Rails.logger

Sinatra

To use Airbrake with Sinatra, simply require the gem, configure it and use our Rack middleware.

# myapp.rb
require 'sinatra/base'
require 'airbrake'

Airbrake.configure do |c|
  c.project_id = 113743
  c.project_key = 'fd04e13d806a90f96614ad8e529b2822'

  # Display debug output.
  c.logger.level = Logger::DEBUG
end

class MyApp [[link](#rails)]. To integrate Airbrake in any project,
just `require` the gem in your `Rakefile`, if it hasn't been required and
[configure][config] the notifier.

```ruby
# Rakefile
require 'airbrake'

Airbrake.configure do |c|
  c.project_id = 113743
  c.project_key = 'fd04e13d806a90f96614ad8e529b2822'
end

task :foo do
  1/0
end

Logger

If you want to convert your log messages to Airbrake errors, you can use our integration with Ruby's Logger class from stdlib. All you need to do is to wrap your logger in Airbrake's decorator class:

require 'airbrake/logger'

# Create a normal logger
logger = Logger.new($stdout)

# Wrap it
logger = Airbrake::AirbrakeLogger.new(logger)

Now you can use the logger object exactly the same way you use it. For example, calling fatal on it will both log your message and send it to the Airbrake dashboard:

logger.fatal('oops')

The Logger class will attempt to utilize the default Airbrake notifier to deliver messages. It's possible to redefine it via #airbrake_notifier:

# Assign your own notifier.
logger.airbrake_notifier = Airbrake::NoticeNotifier.new

Airbrake severity level

In order to reduce the noise from the Logger integration it's possible to configure Airbrake severity level. For example, if you want to send only fatal messages from Logger, then configure it as follows:

# Send only fatal messages to Airbrake, ignore anything below this level.
logger.airbrake_level = Logger::FATAL

By default, airbrake_level is set to Logger::WARN, which means it sends warnings, errors and fatal error messages to Airbrake.

Configuring Airbrake logger integration with a Rails application

In order to configure a production logger with Airbrake integration, simply overwrite Rails.logger with a wrapped logger in an after_initialize callback:

# config/environments/production.rb
config.after_initialize do
  # Standard logger with Airbrake integration:
  # https://github.com/airbrake/airbrake#logger
  Rails.logger = Airbrake::AirbrakeLogger.new(Rails.logger)
end

…

rb
# config/initializers/backtrace_silencers.rb

# Delete default silencer(s).
Rails.backtrace_cleaner.remove_silencers!

# Define custom silencer, which adds support for the "blorgh" engine
Rails.backtrace_cleaner.add_silencer do |line|
  app_dirs_pattern = %r{\A/?(app|config|lib|test|blorgh|\(\w*\))}
  !app_dirs_pattern.match?(line)
end

…

ruby
# Capfile
require 'airbrake/capistrano'

If you use Capistrano 3, define the after :finished hook, which executes the deploy notification task (Capistrano 2 doesn't require this step).

# config/deploy.rb
namespace :deploy do
  after :finished, 'airbrake:deploy'
end

If you version your application, you can set the :app_version variable in config/deploy.rb, so that information will be attached to your deploy.

# config/deploy.rb
set :app_version, '1.2.3'

Rake task

A Rake task can accept several arguments shown in the table below:

Key Required Default Example
ENVIRONMENT No Rails.env production
USERNAME No nil john
REPOSITORY No nil https://github.com/airbrake/airbrake
REVISION No nil 38748467ea579e7ae64f7815452307c9d05e05c5
VERSION No nil v2.0

In Rails

Simply invoke rake airbrake:deploy and pass needed arguments:

rake airbrake:deploy USERNAME=john ENVIRONMENT=production REVISION=38748467 REPOSITORY=https://github.com/airbrake/airbrake

Anywhere

Make sure to require the library Rake integration in your Rakefile.

# Rakefile
require 'airbrake/rake/tasks'

…

bash
git clone https://github.com/airbrake/airbrake.git
cd airbrake
bundle

Next, run unit tests.

bundle exec rake

In order to test integrations with frameworks and other libraries, install their dependencies with help of the following command:

bundle exec appraisal install

To run integration tests for a specific framework, use the appraisal command.

bundle exec appraisal rails-4.2 rake spec:integration:rails
bundle exec appraisal sinatra rake spec:integration:sinatra

Pro tip: GitHub Actions config has the list of all the integration tests and commands to invoke them.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Rubyairbrakeapmcapistranocrash-reporting

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category后端框架
PricingOpen source

> Related tools

N
Node.js
基于 V8 的 JavaScript 运行时
D
Django
Python 高级 Web 框架
S
Spring Boot
Java 生态主流微服务框架