https://github.com/smartinez87/exception_notification
これ、便利ですね。
設定
Gemfile
+ gem 'exception_notification'
+ gem 'hipchat' # HipChatを使う場合だけ
Railsの場合は以下のようにすると設定ファイルが作成されます。
$ rails g exception_notification:install
自分は以下のようにしました。
ignored_exceptionsを空でデフォルトで無視されている例外でも補足させてます。
詳細はこちらを参照してください。
またproduction環境のみで実行できるようにしました。
config/initializers/exception_notification.rb
require 'exception_notification/rails'
ExceptionNotification.configure do |config|
# Ignore additional exception types.
# ActiveRecord::RecordNotFound, AbstractController::ActionNotFound and ActionController::RoutingError are already added.
# config.ignored_exceptions += %w{ActionView::TemplateError CustomError}
config.ignored_exceptions = %w{} # 効いてるかな?
# Adds a condition to decide when an exception must be ignored or not.
# The ignore_if method can be invoked multiple times to add extra conditions.
config.ignore_if do |exception, options|
not Rails.env.production?
end
# Notifiers =================================================================
# Email notifier sends notifications by email.
config.add_notifier :email, {
email_prefix: "[ERROR_MODE] ",
sender_address: %{"Error Notification" <dev@example.com>},
exception_recipients: %w{dev-ml@example.com}
}
# HipChat notifier sends notifications to your HipChat room. Requires 'hipchat' gem.
config.add_notifier :hipchat, {
:api_token => 'YOUR_API_KEY',
:room_name => 'YOUR_ROOM_ID_OR_NAME'
}
end
これだけ。
$ rails s -e=production
とかやって、わざとExceptionを起こすとメールやHipChatの部屋にアラートが届くと思います。
また例外を補足することをトリガーとしているだけかとおもいきや、
begin
some code...
rescue => e
ExceptionNotifier.notify_exception(e)
end
みたいな感じでメソッドとして呼べるみたいです。バックグラウンドで処理されるように設定する必要があるみたいですが、以下のようにすると先ほどの設定ファイルに設定が追加されるみたいです。
rails g exception_notification:install --resque
or
rails g exception_notification:install --sidekiq
超簡単便利!