一个迭代开发中的网站难免存在bug,出bug的时候客户体验就很不好了,为解决此问题,可以在class error产生的时候,触发跳转到统一提示页面,并给开发人员发邮件报错误信息,提高测试能力和用户体验。以下是核心方法;在ApplicationController中添加如下代码,不同rails版本的class error略有变化。
AR_ERROR_CLASSES = [ActiveRecord::RecordNotFound, ActiveRecord::StatementInvalid]
ERROR_CLASSES = [NameError, NoMethodError, RuntimeError,
ActionView::TemplateError,
ActiveRecord::StaleObjectError, ActionController::RoutingError,
ActionController::UnknownController, AbstractController::ActionNotFound,
ActionController::MethodNotAllowed, ActionController::InvalidAuthenticityToken]
ACCESS_DENIED_CLASSES = [CanCan::AccessDenied]
if Rails.env.production?
rescue_from *AR_ERROR_CLASSES, :with => :render_ar_error
rescue_from *ERROR_CLASSES, :with => :render_error
rescue_from *ACCESS_DENIED_CLASSES, :with => :render_access_denied
end
#called by last route matching unmatched routes. Raises RoutingError which will be rescued from in the same way as other exceptions.
#备注rails3.1后ActionController::RoutingError在routes.rb中最后加如下代码才能catch了。
#rails3下:match '*unmatched_route', :to => 'application#raise_not_found!'
#rails4下:get '*unmatched_route', :to => 'application#raise_not_found!'
def raise_not_found!
raise ActionController::RoutingError.new("No route matches #{params[:unmatched_route]}")
end
def render_ar_error(exception)
case exception
when *AR_ERROR_CLASSES then exception_class = exception.class.to_s
else exception_class = 'Exception'
end
send_error_email(exception, exception_class)
end
def render_error(exception)
case exception
when *ERROR_CLASSES then exception_class = exception.class.to_s
else exception_class = 'Exception'
end
send_error_email(exception, exception_class)
end
def render_access_denied(exception)
case exception
when *ACCESS_DENIED_CLASSES then exception_class = exception.class.to_s
else exception_class = "Exception"
end
send_error_email(exception, exception_class)
end
分享到:
相关推荐
在"highcharts4.1.8"这个压缩包中,包含了Highcharts的4.1.8版本的完整资源,包括JavaScript库文件和部分样例演示。 首先,Highcharts的API是其核心功能之一,它提供了丰富的函数和配置选项,使得开发者能够定制...
《Hibernate 4.1.8.Final:持久化框架的深度探索》 Hibernate,作为Java领域最著名的对象关系映射(ORM)框架之一,自诞生以来就极大地简化了数据库操作,使得开发者能够更加专注于业务逻辑,而非底层的SQL语句。在...
EVCapture_4.1.8(1).exe
帮助全球用户解决语言鸿沟问题,特长是对字幕支持(自动获取字幕) : 包括可自动识别字幕文件的语言编码; 避免字幕显示成乱码; 双字幕切换; 实时字幕延时调整等功能. 支持播放的视频格式包括但不限于: mpg, mpeg, mpeg...
netty4.1.8已经在用了,没问题,内含所有netty的jar包
OpenOffice 4.1.8 是一款开源的办公软件套件,专为各种操作系统,包括Ubuntu,提供免费的文档处理、电子表格、演示文稿、绘图和数据库管理工具。这款软件是Apache软件基金会的项目之一,旨在替代商业化的Microsoft ...
《Spring Framework 4.1.8.RELEASE:深入解析与应用》 Spring Framework作为Java开发中的核心框架,一直以其强大的功能和灵活性深受开发者喜爱。在本文中,我们将深入探讨Spring Framework 4.1.8.RELEASE这一特定...
Hibernate4.1.8.Final帮助.chm Hibernate4.1.8.Final帮助.chm Hibernate4.1.8.Final帮助.chm Hibernate4.1.8.Final帮助.chm
hibernate 源码 4.1.8 core,包含hibernate的基本功能
`hibernate4.1.8`版本是Hibernate框架的一个特定发行版,适用于Java企业级应用的开发。 在Java EE开发中,数据库操作通常是复杂且繁琐的,需要编写大量的SQL语句并与Java对象进行映射。而Hibernate通过提供一个强大...
Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack 支持usb2.0
自己用到动手绿化的!版本特点:精简无用的文件,禁止连接手机之后,自动安装推广应用,打包单文件,方便运行。 一键ROOT 大师在手,ROOT您有!内置ROOT大师,支持机型最多、成功率最高的ROOT工具,轻松解放您的手机...
Wallless Windows setup 4.1.8 8月9日.exe
Apache OpenOffice是一款开源免费的办公套件,这款软件可以代替Microsoft office,满足你日常办公所需。 Apache OpenOffice包含文本文档、电子表格、演示文稿、绘图、数据库等。 它能够支持许多语言并且在所有普通...
springmvc4.1.8框架所需的最基本jar包:spring-aop、spring-beans、spring-context、spring-context-support、spring-core、spring-web、spring-webmvc
SoftTree SQL Assistant 4.1.8
4.1.8-1.wgt
标题"hibernate4.1.8简化包"指的是一个特定的Hibernate框架版本,即4.1.8版本的精简版。Hibernate是一个流行的Java持久层框架,它允许开发者以对象关系映射(ORM)的方式处理数据库操作,极大地简化了Java应用与...
标题中的"zeromq-4.1.8.tar.gz"指的是ZeroMQ的4.1.8版本的源代码包,通常以tar.gz格式压缩,这是一种在Linux和类Unix系统中常见的归档和压缩方式。 zeromq的核心特性包括点对点连接、发布/订阅模式、请求/响应模式...