在application_controller.rb 中使用rescue_from 可以完成大部分工作:
01 class ApplicationController < ActionController::Base
02
03 def self.rescue_errors
04 rescue_from Exception, :with => :render_error
05 rescue_from RuntimeError, :with => :render_error
06 rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found
07 rescue_from ActionController::RoutingError, :with => :render_not_found
08 rescue_from ActionController::UnknownController, :with => :render_not_found
09 rescue_from ActionController::UnknownAction, :with => :render_not_found
10 end
11 rescue_errors unless Rails.env.development?
12
13 def render_not_found(exception = nil)
14 render :template => "errors/404", :status => 404, :layout => 'public'
15 end
16
17 def render_error(exception = nil)
18 render :template => "errors/500", :status => 500, :layout => 'public'
19 end
20
21 end
但 ActionController::RoutingError 在rails 3中却不能得到预期结果,因为Rails 3使用了Rack,Routing的异常在ActionDispatch::ShowExceptions 中处理了,而没有传入到application controller中
比较靠谱且简单的解决方案是在routes.rb最后加一条默认routes,指向到一个类似routing_error的action中,但需要加多一个action感觉不是很必要,得益于rails 3 routing的强大,可以很简单快捷方便的如此这般:
# make sure this rule is the last one
match '*path' => proc { |env| Rails.env.development? ? (raise ActionController::RoutingError, %{No route matches "#{env["PATH_INFO"]}"}) : ApplicationController.action(:render_not_found).call(env) }
即可,在development中可以仍然查看详细的异常track back方便调试。
一些给力链接:
http://www.perfectline.ee/blog/custom-dynamic-error-pages-in-ruby-on-rails
http://helderribeiro.net/?p=366
分享到:
相关推荐
6. **错误处理**:Rails API鼓励返回标准的HTTP状态码和结构化的错误消息,以便客户端可以理解并适当地处理错误。 7. **JSON Schema**:通过使用JSON Schema,开发者可以定义API的数据结构和验证规则,增强API的可...
本书深入浅出地介绍了Rails 4的各种组件和功能,适合已经熟悉Ruby编程并希望深入了解Rails框架的开发人员。 #### 描述:学习ruby! 这句简短的描述暗示了本书的一个重要目标:帮助读者通过学习Rails来提高他们的...
Sidekiq是一款高效的消息队列系统,主要用于Ruby on Rails应用,但在这里提到的是它与Java的结合使用。...在实际项目中,这种跨语言的解决方案需要根据具体需求进行定制,确保满足业务的稳定性和扩展性。
综上所述,`weixin_rails_middleware` 是一款强大且易于使用的工具,能够帮助 Ruby on Rails 开发者无缝集成微信服务,实现各种定制化的微信功能,如自动回复、用户管理、消息推送等。通过深入理解其工作原理和使用...
- **创建Rails项目**:介绍如何使用`rails new`命令来生成一个新的Rails项目,包括如何指定版本和其他选项。 - **Hello, Rails!**:通过一个简单的“Hello, World!”示例,让读者快速上手Rails的基本操作流程。 - **...
4. **错误处理**: 返回结构化的错误信息,包括错误代码、错误消息和可能的解决方案。 5. **认证与授权**: 实现安全的用户认证和权限控制,如JWT(JSON Web Tokens)或OAuth2。 **开发工具与库** 1. **ActiveModel::...
此外,它还支持自定义错误处理器,可以定制化错误处理策略。 在实际应用中,常见的使用场景包括: - 发送电子邮件:发送邮件通常是一个耗时的操作,可以放在消息队列中,由后台服务处理。 - 图片处理:上传图片后,...
在Ruby on Rails(Rails)框架中,为文件上传添加进度条功能可以显著提升用户体验,让用户在上传大...在实际项目中,你还可以根据需求进一步定制和扩展,比如添加预览功能,或者对上传过程进行更多的错误处理和反馈。
同时,`:checked_value`和`:unchecked_value`可以定制选中和未选中的值。 10. **提交按钮** 提交按钮可以通过`f.button`创建,也可以通过`:button`选项自定义样式: ```ruby , 'Save Changes', class: 'btn-...
3. REST、资源和Rails:介绍了REST(Representational State Transfer)架构风格的核心理念,如何在Rails中以资源为中心构建应用,以及Rails中RESTful路由的CRUD(创建、读取、更新、删除)操作。这部分内容还涉及了...
Ruby on Rails 是一个基于Ruby语言的开源Web应用...在实际操作过程中,可能会遇到各种问题,但只要遵循Ruby on Rails的开发习惯和Redmine的文档指示,都能找到解决办法。记住,不断学习和实践是成为IT行业大师的关键。
Ruby on Rails 是一款广受欢迎的Web开发框架,它以其MVC(模型-视图-控制器)架构模式和生产力导向的设计理念赢得了开发者们的喜爱。RailsAdmin 是一个基于Ruby on Rails的后台管理界面引擎,它允许开发者快速创建和...
- **开发模式**: 详细讨论了开发环境下Rails的行为特征,比如自动代码重载、错误报告等。 - **测试模式**: 探讨了如何设置和使用测试环境来验证应用程序的功能,包括单元测试、集成测试等。 - **生产模式**: 分析...
在Ruby on Rails(Rails)框架中,验证码是一种用于防止恶意自动化的工具,它通常用于注册、登录和其他敏感操作,以确保只有人类用户能够执行这些操作。在这个实例中,我们将探讨如何在Rails应用中实现验证码功能。 ...
Rails Erd还支持一些可选参数来定制生成的ERD,例如: - `--attributes`: 包含模型的属性信息。 - `--file`: 指定输出文件的路径和名称。 - `--diagram-depth`: 控制关联的深度,决定显示多少级的关联关系。 - `--...
3. **扩展Rails**:这部分可能涵盖Rails的可扩展性和模块化设计,如自定义gem的创建,引擎的使用,以及如何利用Rails的插件系统来增强功能。 4. **企业级特性**:可能涉及安全(如认证和授权)、性能优化、错误处理...
如果`rails.exe`是一个定制的Rails开发环境,可能包含了预配置的数据库连接、 gems(如Devise)和示例代码,帮助开发者快速搭建登录系统。通过运行这个工具,用户可以跳过一些基础设置,直接进入开发阶段。 总结...
对于开发者来说,这样的工具不仅提供了便利,还有助于学习和定制以适应个人工作流程。 在压缩包中的文件“rubyweaver.mxp”很可能是Adobe Dreamweaver的插件安装文件,用户可以通过导入这个文件到Dreamweaver中来...