Railsで発生した例外をSlackに送りたい
- exception_notificationがslack対応している様なので使ってみる。
Gemfile
- slack対応版が未だgithubのmasterにしか無いのでgithubから取得
gem 'exception_notification', :github => 'smartinez87/exception_notification'
gem 'slack-notifier'
雛形生成
bundle exec rails g exception_notification:install
create config/initializers/exception_notification.rb
exception_notification.rb編集
- ここにはtokenはapi tokenと書いてあるがwebhooksのtokenでOK
- ActiveRecord::RecordNotFound, AbstractController::ActionNotFound, ActionController::RoutingError はdefaultで監視から外れている様なので必要であれば
config.ignored_exceptions = ''
を追加する
旧
config.add_notifier :slack, {
:team => "チーム名称",
:token => "webhooks token",
:channel => "#グループ"
}
新
config.add_notifier :slack, {
:webhook_url => "webhooks url",
:channel => "#グループ"
}
application_controller.rbの編集
- application_controller.rbで例外をハンドリングする
rescue_from Exception, with: :render_500
...
def render_500(e)
ExceptionNotifier.notify_exception(e, :env => request.env, :data => {:message => "error"})
render template: 'errors/error_500', status: 500
end