環境
- Rails 5.2.3
参考サイト
手順
1. bugsnagでユーザ登録。
2. 指示に従い環境を選ぶ(今回は、Ruby
でRails
)
3. Gemfileにbugsnag
を追加する。
gem 'bugsnag'
bundle install
4. 指示に従い、以下のコマンドでconfig/initializers/bugsnag.rb
を生成する。
rails generate bugsnag <YOUR_BUGSNAG_API_KEY>
尚、そのままではAPIキーがベタ書きされるので、以下のように環境変数から読み込むようにする。
# frozen_string_literal: true
Bugsnag.configure do |config|
config.api_key = ENV['BUGSNAG_API_KEY']
end
5. production環境でだけbugsnag
のnotificationが飛ぶようにする。
# frozen_string_literal: true
Bugsnag.configure do |config|
config.api_key = ENV['BUGSNAG_API_KEY']
config.notify_release_stages = ['production']
end
参考: https://docs.bugsnag.com/platforms/ruby/rails/configuration-options/
6. エラーの報告
ここ(↑)までの設定で、rescue されていない例外は全て報告されるようになります。
Reporting unhandled exceptions
After completing installation and basic configuration, unhandled exceptions in your Rails app will be automatically reported to your Bugsnag dashboard.
https://docs.bugsnag.com/platforms/ruby/rails/#reporting-unhandled-exceptions
以下、rescue している箇所で bugsnag への通知を入れる例です。
begin
raise 'Something went wrong!'
rescue => exception
Bugsnag.notify(exception)
# 必要であれば、ここで何か処理を行う。
end
rescue の中で再度 raise する場合は、以下のように skip_bugsnag
を挟む(そうしないと、再度 bugsnag に通知が飛びます)。
参考URL: https://docs.bugsnag.com/platforms/ruby/rails/#avoiding-re-notifying-exceptions
begin
raise 'Something went wrong!'
rescue => exception
Bugsnag.notify(exception)
exception.instance_eval { def skip_bugsnag; true; end }
# Now this won't be sent a second time by the exception handlers
raise exception
end