我想在應用程序中出現異常並呈現常規500頁時發送電子郵件。我找不到如何執行第500頁渲染:如何在rescue_from中渲染500頁
class ApplicationController < ActionController::Base
rescue_from StandardError do
send_email_of_error
# what goes here?
end
...
end
我想在應用程序中出現異常並呈現常規500頁時發送電子郵件。我找不到如何執行第500頁渲染:如何在rescue_from中渲染500頁
class ApplicationController < ActionController::Base
rescue_from StandardError do
send_email_of_error
# what goes here?
end
...
end
再次揚起異常將有可能給你想要的東西:
rescue_from StandardError do |exception|
send_email_of_error
raise exception
end
您也可以打電話render
來渲染自己的網頁,the docs有這是一個例子。
但爲什麼要重新發明輪子? exception notifier gem已經做到了這一點,並且可以自定義和測試。
這也許適合您需求的方法:
class ApplicationController < ActionController::Base
rescue_from Exception, :with => :render_500
def render_500(exception)
@exception = exception
render :template => "shared/500.html", :status => 500
end
end
絕不應該從異常中拯救。而不是像Andrew Marshall的回答那樣使用StandardError。 – dmur 2014-11-21 19:53:20
@dmur如果你解釋你的評論,這對他人會有幫助。問題是如何渲染500頁。這在Andrew Marshalls的答案中沒有涉及。無論你是從Exception還是StandardError中拯救 - 我從來不會這麼做,因爲你對這個錯誤一無所知,所以讓它崩潰並修復它 - 在這裏並不重要。在我的答案我應該寫「AnyException」 – awenkhh 2014-11-22 21:47:19
你是對的,這裏有一個解釋:http://stackoverflow.com/questions/10048173/why-is-it-bad-style-to-rescue-exception-e-在旁註 – dmur 2014-11-25 21:22:01
可能,它可以把眼光放在崗哨有用的,有什麼用一堆的系統信息會自動通知。
這是偉大的。我發現原來兩年沒有更新。我會嘗試這個版本。 – mbdev 2012-03-09 18:29:36
不幸的是,原來顯示錯誤頁面,但狀態碼爲200. – 2014-10-30 22:01:14