2010-09-02 38 views
12

Có điều gì đó tương tự như một after_filter vẫn chạy nếu hành động nêu ra một ngoại lệ?after_filter cho trường hợp ngoại lệ

Tôi đang sử dụng trình ghi nhật ký bên ngoài (vì tôi đang sử dụng Heroku); các tiêu đề phản hồi được lọc và đăng nhập vào after_filter. Nếu một ngoại lệ được nâng lên, bộ lọc không chạy và tôi không có nhật ký của dữ liệu tiêu đề phản hồi.

Nếu tôi cố gắng nối vào log_error hoặc rescue_action_in_public, tiêu đề phản hồi sẽ không hoàn thành (vì kết xuất thực tế được gọi sau các tiêu đề này).

Có chức năng nào khác mà tôi có thể ghi đè sẽ được gọi tại thời điểm tương đương với một after_filter, nhưng luôn chạy bất kể một ngoại lệ có được ném không?

Cảm ơn!

Trả lời

10

Bạn có thể sử dụng around_filter và bắt các ngoại lệ. Ví dụ:

# in a controller 
around_filter :catch_exceptions 

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

Bạn có thể thêm around_filter vào lớp điều khiển ứng dụng.rb hoặc trong lớp của trình điều khiển riêng lẻ.

+0

Điều đó bắt ngoại lệ, nhưng không cung cấp cho các tiêu đề phản hồi hoàn chỉnh, tôi tin. Bất cứ điều gì bạn làm trong giải cứu không được bao gồm. . . Không? –

+0

Nếu có ngoại lệ thì không có phản hồi hoặc tiêu đề gốc ... Tôi không chắc q của bạn là gì. Có thể bạn muốn http://github.com/rails/exception_notification gửi email cho bạn với một dấu vết ngăn xếp, args và nhiều hơn nữa khi có một ngoại lệ. –

Các vấn đề liên quan