我已經花了很多時間在谷歌試圖找出如何簡單地得到鐵軌彷彿我公司在生產模式(簡單,所以我可以驗證它確實是顯示我的錯誤打獵左右我期待)......超級沮喪rescue_action_in_public方法
所以首先我看了,你可以設置配置/環境/ development.rb有
config.consider_all_requests_local = false
然後在應用控制器做:
protected
def local_request?
false
end
def rescue_action_in_public(exception)
logger.info("**** LOL ****")
redirect_to :root, :notice => "lol"
end
然而,觸發一個ActiveRecord :: RecordNotFound錯誤仍然顯示堆棧跟蹤,它不把任何東西在我的日誌。
...接下來我讀到你必須要在生產模式......於是,我的..同樣的事情..
然後我讀,你需要更換local_request?方法應用控制器與一個在配置/環境/ production.rb
class ActionDispatch::Request
def local_request?(*args)
false
end
end
所以我做了..仍然得到堆棧跟蹤,並沒有日誌消息..
然後,我讀了rescue_action_in_public方法有是在ShowExceptions類..所以我提出,在配置/初始化/ error_handling.rb
module ActionDispatch
class ShowExceptions
protected
def rescue_action_in_public(exception)
logger.info("************** WTF ")
status = status_code(exception).to_s
template = ActionView::Base.new(["#{Rails.root}/app/views"])
if ["404"].include?(status)
file = "/errors/404.html.erb"
else
file = "/errors/500.html.erb"
end
body = template.render(:file => file)
render(status, body)
end
end
end
不過..我得到一個堆棧跟蹤..,仍然沒有在我的日誌。
AFAIK'rescue_action_in_public'用Rails 3.嘗試打破'rescue_from',這就是我所做的。 – whitequark
同意這一點,你可以檢查Rails.env或request.local?裏面** rescue_from ** – Anatoly