Rails 3 下自定义错误信息显示页面
by
at 2010-07-08 15:21:11
original http://www.javaeye.com/topic/708334
大家都知道想在Rails下自定义错误显示的页面是修改 rescue_action_in_public 这个方法,我之前也写过一篇blog介绍在Rails 2.X下如何自定义错误信息页面 http://yangzhihuan.javaeye.com/blog/577624
不过在 Rails 3中这个方法的位置改变了,上文提到的链接中的方法已经无效了,其它还是修改 rescue_action_in_public 这个方法,只不过这个方法不再放在 ActionController::Rescue 这个module里面了,请看代码:
以下的代码放在 config/initializers 文件夹下,随便弄个文件名都可以,放在这个文件夹下,启动项目时会自动加载,这样就不用像放在 lib 文件夹中,还要手工去加载了。
module ActionDispatch class ShowExceptions
private # customize error handle def rescue_action_in_public_with_handle_system_error(exception) logger.error("rescue_action_in_public executed") begin # 修改这个文件的主要目的就是为了加上这么一句 SystemErrorNotify.system_error(exception).deliver rescue => e logger.error "****************************" logger.error "#{e.message}" logger.error "#{e.backtrace.join('\n')}" logger.error "****************************" end # 调用原来的 rescue_action_in_public 方法,该干嘛干嘛去 rescue_action_in_public_without_handle_system_error(exception) end alias_method_chain :rescue_action_in_public,:handle_system_error
end end
注意 rescue_action_in_public 现在放在 ActionDispatch::ShowExceptions 中
我也不再直接覆盖 rescue_action_in_public 方法,而是使用了 alias_method_chain ,我觉得这样做扩展更加干净。
<br><br>
作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>
<br>
声明: 本文系JavaEye网站发布的原创文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
<br><br>
<span style="color:red">
<a href="http://www.javaeye.com/topic/708334" style="color:red">已有 <strong>0</strong> 人发表回复,猛击->><strong>这里</strong><<-参与讨论</a>
</span>
<br><br><br>
JavaEye推荐