1

exception_notification gem を使用して例外に関するメールを送信する Rails 3 アプリがあります。

また、例外が発生したときにユーザー固有のエラー メッセージを表示したいと思いますが、発生する可能性のあるすべての例外が確実ではないため、一般的な例外をキャッチします。これを行う方法は、例外から救出し、カスタム例外を発生させることだと考えています。そうすれば、例外に関するメールが引き続き届き、ユーザーはカスタム例外のエラー ページを見ることができます。

これは Rails 3 のやり方のように聞こえますか?

どうもありがとう。

4

1 に答える 1

4

ないと思います。

ライアン・デイビスが言うように

例外を救出しないでください。これまで。または私はあなたを刺します。

その声明の詳細については、こちらをご覧ください。

Rails 3.2 は、2 つのミドルウェアで例外処理を行います。

  • ActionDispatch::ShowExceptions
  • ActionDispatch::DebugExceptions

実行して確認できます

$ rake middleware 

ActionDispatch::ShowExceptions [ソース]

例外ページをレンダリングするために本番環境で使用されます。

ActionDispatch::DebugExceptions [ソース]

開発環境で使用され、例外が発生したときに詳細なスタック トレースをレンダリングします。action_dispatch.show_detailed_exceptionsより正確に true の場合、ミドルウェア コール チェーンを停止し、スタック トレースをレンダリングします。


したがって、このミドルウェアで通常のことを行う最も簡単な方法は、 のcallメソッドにモンキーパッチを適用しActionDispatch::DebugExceptions、必要なすべてのことを行ってから、元のメソッドを呼び出すことです。

ただし、これを行うより良い方法は、これら 2 つの間に独自のミドルウェアを含めることです。その中で、呼び出しをレスキュー ブロック内にラップし、カスタム処理を行います。

私はAirbrakeのメンテナーであり、これはまさに私たちが現在行っていることです

また、自己ホスト型の代替手段であるErrbitを確認することもできます。

于 2013-02-06T01:08:13.030 に答える