2010-09-02 1 views
12

조치가 예외를 발생시키는 경우에도 실행되는 after_filter와 유사한 것이 있습니까?예외에 대한 after_filter

외부 로거를 사용하고 있습니다. (내가 Heroku에 있기 때문에); 응답 헤더는 필터링되고 after_filter에 기록됩니다. 예외가 발생하면 필터가 실행되지 않고 응답 헤더 데이터의 로그가 없습니다.

log_error 또는 rescue_action_in_public에 연결하려고하면 응답 헤더가 완료되지 않습니다 (이후 실제 렌더링이 호출되기 때문에).

after_filter와 동등한 시간에 호출 될 수있는 다른 함수가 있지만 예외가 throw되는지 여부에 관계없이 항상 실행됩니까?

감사합니다.

답변

10

around_filter를 사용하여 예외를 catch 할 수 있습니다. 예 :

# in a controller 
around_filter :catch_exceptions 

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

around_filter를 application.rb 컨트롤러 클래스 나 개별 컨트롤러의 클래스에 추가 할 수 있습니다.

+0

예외를 잡았지만 전체 응답 헤더를 제공하지는 않는다고 생각합니다. 구조에서 렌더링 한 것은 포함되지 않습니다. . . 아니? –

+0

예외가있는 경우 원래 응답이나 헤더가 없습니다 ... q가 무엇인지 확실하지 않습니다. 어쩌면 http://github.com/rails/exception_notification에서 예외가있을 때 스택 추적, args 등을 이메일로 보낼 수 있습니다. –