rails出错的时候,一般都是跳转到错误跟踪的页面下,这样在开发环境下是很好的,但是对正式环境就不是太友好了,所以如果你想自定义一下出错的页面,还是有办法的.
我一般都会在lib目录下新建一个ooxx.rb文件存放下面的代码,然后在environment.rb下加载一下.
environment.rb
ooxx.rb
请注意做完以上操作后,在开发环境下,照样会跳转到错误跟踪页面的,这是因为这个方法是否起作用取决于development.rb和production.rb中的配置:
我一般都会在lib目录下新建一个ooxx.rb文件存放下面的代码,然后在environment.rb下加载一下.
environment.rb
require File.join(File.dirname(__FILE__),'..', 'lib','ooxx')
ooxx.rb
module ActionController
module Rescue
protected
#自定义的错误处理
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
end
end
请注意做完以上操作后,在开发环境下,照样会跳转到错误跟踪页面的,这是因为这个方法是否起作用取决于development.rb和production.rb中的配置:
# in production.rb
config.action_controller.consider_all_requests_local = false
# in development.rb
config.action_controller.consider_all_requests_local = true