Notifier plugin troubleshooting
When reporting issues about the notifier, or about not seeing exceptions you expect to see in Airbrake, please be sure to include the following information in your tender report:
- Rails version
- Ruby version
- List of plugins and gems in use (contents of
/vendor/pluginsand/vendor/gemswill do nicely)
As of v1.2.0 the notifier now prints out some basic environment information along with the response from Airbrake in your project's log files. Make sure to check that as well if you're having problems with getting the notifier to work.
The rake Airbrake:test task runs fine, but some of
my exceptions aren't showing up in Airbrake.
There are a number of exceptions that are common enough that we explicitly do not send them to Airbrake at all. These include:
- ActiveRecord::RecordNotFound
- CGI::Session::CookieStore::TamperedWithCookie
- ActionController::RoutingError
- ActionController::InvalidAuthenticityToken
- ActionController::UnknownAction
If you're running Rails 2.3.x, or any other rack-based system, then be sure you have the latest version of the notifier plugin. There was a known issue with prior versions of the plugin and rack clients.
I'm getting emails for some exceptions, but not for others. What gives?
There are a number of exceptions that are common enough that we explicitly do not send emails for them. They include:
- ActiveRecord::RecordNotFound
- CGI::Session::CookieStore::TamperedWithCookie
- ActionController::InvalidAuthenticityToken
- ActionController::RoutingError
- ActionController::UnknownAction
The notifier also does not to send these to Airbrake by default (see question above), but can be configured to do so. Even if it does send these errors to Airbrake, emails for them are not sent out.
If your exception isn't on this list, then double check that you have checked "Receive email notifications?" on your profile page.
I don't see any error notifications from my development environment
Airbrake does not send notifications for the development and test environments. This allows you to test and develop locally without flooding your inbox with noisy false positives.
The Airbrake:test rake task works fine on my production server, but not on my development or staging environment.
Running rake Airbrake:test generates a real
exception inside your rails application. The Airbrake Notifier
plugin then catches that exception and sends it on to the Airbrake
service. To ensure that Airbrake doesn't receive bogus exceptions,
the Notifier only sends them along if it's running in production
(well, if
config.action_controller.consider_all_requests_local
is false, to be more precise). This means that your development
exception will get ignored.
To test that Airbrake is properly installed, you'll have to
either run the test on staging or production, or convince your
local rails application that it's running in production. You can do
that by running export RAILS_ENV=production; rake
Airbrake:test. You may need to take steps like creating a
local production database in order to do the latter and changing
config.action_controller.consider_all_requests_local.
I'm concerned with my application's performance in the event that Airbrake goes down.
We completely understand that concern, and have included
configurable timeout settings into the notifier. You can specify
the http_open_timeout and
http_read_timeout values in your Airbrake.rb file:
AirbrakeNotifier.configure do |config|
config.api_key = 'issekrit'
config.http_open_timeout = 1 # defaults to 2 (seconds)
config.http_read_timeout = 3 # defaults to 5 (seconds)
end
I'm using rescue_from in my controller, but now I don't see the exceptions in Airbrake. Whazzup with that?
Airbrake uses alias_method_chain to hook into the
rescue_action_in_public method.
# Overrides the rescue_action method in ActionController::Base, but does not inhibit
# any custom processing that is defined with Rails 2's exception helpers.
def rescue_action_in_public_with_Airbrake exception
notify_Airbrake(exception) unless ignore?(exception)
rescue_action_in_public_without_Airbrake(exception)
end
The rescue_from system in Rails actually catches
the exceptions before rescue_action_in_public happens.
The upshot is that if you want to see those exceptions in Airbrake,
you'll need to explicitly send them along in your rescue_from
method using notify_Airbrake(exception):
rescue_from SillyError, :with => :render_silly_error
def render_silly_error(e)
notify_Airbrake(e)
render :template => 'i_blowzed_up'
end
Airbrake appears to be throwing "TypeError (can't dump anonymous class Class):"
This could be because Rack::Bug is installed, make sure to turn it off when in the production environment.
There's an open issue in the Rack::Bug project to attempt to resolve this.
Plugin not found: ["git://github.com/thoughtbot/Airbrake_notifier.git"]
This is due to
a bug with Rails and Ruby1.9 when using script/plugin
install. For now, you can do the following to resolve it
from your Rails' app root to get the notifier installed:
git clone git://github.com/Airbrake/Airbrake_notifier vendor/plugins/Airbrake_notifier
rm -rf vendor/plugins/Airbrake_notifier/.git
Errors when submitting custom data through
AirbrakeNotifier.notify
Make sure to check out the documentation in Submitting Errors to Airbrake. Also, here's an example gist of a YAML hash that Airbrake accepts that was generated by Sinatra: http://gist.github.com/166029