ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。
今回は、Rails アプリケーションのエラー通知の章です。
サブスクライバの設定
リンクはこちら
例えば以下のように記述をするだけで、エラーをキャッチしてログで「エラーを検知しました」と表示されるのを確認できます。
ポイントとしては、report
というメソッドを持ったクラスのインスタンスをsubscribe
で登録する、というところです。
# config/initializers/error_subscriber.rb class ErrorSubscriber def report(error, handled:, severity:, context:, source: nil) p 'エラーを検知しました' end end Rails.error.subscribe(ErrorSubscriber.new)
エラーを通知しつつ、握りつぶす
リンクはこちら
例えば上記のサブスクライバを登録した状態で、適当にエラーを発生するコードを混ぜると、report
メソッドの中身は実行されますが、処理は継続されます。
def index @books = Book.all Rails.error.handle do no_exist_method end end
Started GET "/books" Processing by BooksController#index as HTML "エラーを検知しました" ... Completed 200 OK
処理を止めたくはないけど通知はして欲しい時に使えそうですね。