Rails在不同的环境下,对错误的处理是不一样的,在开发和测试环境中提供开发级别的错误,在生产环境中提供Application Error的错误。
1、设置全局的异常处理程序,在application.rb中增加:
[code] def rescue_action_in_public(exception)
logger.error("rescue_action_in_public executed")
case exception
when ActiveRecord::RecordNotFound, ::ActionController::RoutingError,
::ActionController::UnknownAction
logger.error("404 displayed")
render(:file => "#{RAILS_ROOT}/public/404.html",
:status => "404 Not Found")
else
logger.error("500 displayed")
render(:file => "#{RAILS_ROOT}/public/500.html",
:status => "500 Error")
# SystemNotifier.deliver_exception_notification(self, request,
# exception)
end
end
[/code]
2、Controller级别的异常处理,可以在你自己的Controller里面增加:
[code]def rescue_action_in_public(exception)
render :text => "<html><body>
<p>There was a controller specfic error processing your request.</p>
<!-- #{exception} --></body></html>"
end
[/code]
3、注意在不同环境中的配置,生产环境中,默认的配置应该就可以显示效果,但在开发模式下,需要确认/config/environments/development.rb中的
[code]config.action_controller.consider_all_requests_local = false[/code]
如果在本机访问必须增加:
[code] def local_request?
false
end
[/code] 才能显示错误页面
1、设置全局的异常处理程序,在application.rb中增加:
[code] def rescue_action_in_public(exception)
logger.error("rescue_action_in_public executed")
case exception
when ActiveRecord::RecordNotFound, ::ActionController::RoutingError,
::ActionController::UnknownAction
logger.error("404 displayed")
render(:file => "#{RAILS_ROOT}/public/404.html",
:status => "404 Not Found")
else
logger.error("500 displayed")
render(:file => "#{RAILS_ROOT}/public/500.html",
:status => "500 Error")
# SystemNotifier.deliver_exception_notification(self, request,
# exception)
end
end
[/code]
2、Controller级别的异常处理,可以在你自己的Controller里面增加:
[code]def rescue_action_in_public(exception)
render :text => "<html><body>
<p>There was a controller specfic error processing your request.</p>
<!-- #{exception} --></body></html>"
end
[/code]
3、注意在不同环境中的配置,生产环境中,默认的配置应该就可以显示效果,但在开发模式下,需要确认/config/environments/development.rb中的
[code]config.action_controller.consider_all_requests_local = false[/code]
如果在本机访问必须增加:
[code] def local_request?
false
end
[/code] 才能显示错误页面
5585

被折叠的 条评论
为什么被折叠?



