13

アクションで例外が発生した場合でも実行されるafter_filterに似たものはありますか?

私は外部ロガーを使用しています(Herokuを使用しているため)。応答ヘッダーはフィルター処理され、after_filterに記録されます。例外が発生した場合、フィルターは実行されず、応答ヘッダーデータのログがありません。

log_errorまたはrescue_action_in_publicにフックしようとすると、応答ヘッダーが完成しません(実際のレンダリングはこれらの後に呼び出されるため)。

after_filterと同等の時間に呼び出されるが、例外がスローされるかどうかに関係なく常に実行される、オーバーライドできる別の関数はありますか?

ありがとう!

4

1 に答える 1

12

around_filter を使用して例外をキャッチできます。例えば

# in a controller
around_filter :catch_exceptions

def catch_exceptions
  yield
rescue ActiveRecord::RecordNotFound
  permission_denied_response # gives a stock error page
end

application.rb コントローラー クラスまたは個々のコントローラーのクラスに around_filter を追加できます。

于 2010-09-02T04:10:02.903 に答える