目前,当我的rails应用程序遇到错误时,它会将错误代码和堆栈跟踪转储到浏览器窗口。
如何将其关闭以便这些错误仅记录在日志中而不会输出到浏览器中?
谢谢
更正:我主要关心的只是验证错误。我想要的就是使用生成的脚手架时获得的相同功能。我想显示验证错误消息并突出显示有问题的表单字段。现在,我得到的是这个标准的开发错误输出。最初这是在我的应用程序上工作但不知何故它丢失了。
答案 0 :(得分:6)
当您的服务器在生产模式下遇到错误时,它将显示默认的rails错误页面,而不是您在开发模式下看到的堆栈跟踪。
您可以将自定义静态html 500或404错误页面添加到public / 500.html和public / 404.html中。
如果您希望以不同方式处理错误,可以将以下代码放在ApplicationController中(此代码未经测试,但基于我的一个项目中非常类似的方法):
around_filter :handle_errors
def handle_errors
begin
yield
rescue Exception => e
# Handle the exception however you wish.
end
end
请注意,上面的代码不会处理404错误。但是,您可以通过将以下内容放在config / routes.rb的底部来指定默认操作来处理无法定位的路由:
map.connect '*path', :controller => 'home', :action => 'page_not_found'
编辑:
在做了一些研究之后,有一种替代的,可能更好的自定义错误处理方法:http://brian.pontarelli.com/2007/01/14/handling-rails-404-and-500-errors/。基本上建议是覆盖rescue_action_in_public
方法,如下所示:
def rescue_action_in_public(exception)
render :template => "shared/error", :layout => "standard", :status => "500"
end