`
yangzhihuan
  • 浏览: 168261 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

rails下自定义出错页面

阅读更多
rails出错的时候,一般都是跳转到错误跟踪的页面下,这样在开发环境下是很好的,但是对正式环境就不是太友好了,所以如果你想自定义一下出错的页面,还是有办法的.

我一般都会在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

1
0
分享到:
评论
1 楼 星情泪 2010-01-24  
貌似在application_controller.rb中添加这个方法也可以,根据返回值是true还是false来决定是否显示错误信息,在需要切换的时候就方便一些,不用重读配置文件了

def local_request?
  false
end

相关推荐

    举例理解Ruby on Rails的页面缓存机制

    在 Ruby on Rails 中,页面缓存是一种优化性能的技术,尤其适用于那些内容相对静态或者对用户个性化要求不高的网页。页面缓存的工作原理是将动态生成的 HTML 页面直接保存到服务器的文件系统中,后续的相同请求可以...

    关于rails 3.1 cucumber-rails 1.2.0

    在`support`目录下,开发者可以放置一些辅助文件,例如World类(用于扩展Cucumber的上下文)、Hooks(用于在测试前后的自定义操作)和环境配置。这些支持文件增强了Cucumber-Rails的灵活性和可定制性。 结合Rails ...

    initrailsix:为Rails 6自定义初始模板拉伸

    在Ruby世界中,Rails框架是开发Web应用的热门选择,而`initrailsix`则是一个专为Rails 6设计的自定义初始化模板项目。Rails 6作为最新版本,引入了许多新特性和改进,使得开发者可以更高效、更灵活地构建应用程序。...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    :bomb:自定义错误页面:bomb:Ruby on Rails→将Ruby / Rails异常转换为品牌4xx / 5xx HTTP错误页面。-Ruby开发

    下载次数超过290,000,这是为Rails 5和6提供自定义400/500异常页面的“唯一”宝石,ExceptionHandler目前是CUSTOM Rails错误页面的最受欢迎的异常宝石。 拥有290,000多个下载量,这是为Rails 5和6提供自定义400/500...

    Rails 101 入门电子书

    ### Rails 101 入门电子书知识点... - 自定义helper函数封装复杂逻辑。 通过以上内容的学习,初学者可以全面掌握Ruby on Rails的基础知识,包括环境搭建、基本操作、高级特性等,为后续更深入的学习打下坚实的基础。

    与devise_invitable一起使用的自定义rails_admin邀请操.zip

    4. **视图文件**:`app/views/rails_admin`目录下可能包含自定义的Rails Admin视图,用于展示邀请用户的相关表单和信息。 5. **路由配置**:在`config/routes.rb`中可能添加了与邀请相关的路由,使得用户可以通过...

    custom_configuration:Rails的自定义配置存储

    自定义配置使Rails.configuration点易于用作中央配置存储,即使对于Rails中未包含的东西也是如此。 # config/environments/production.rbBCX :: Application . configure do config . x . resque . jobs_inline = ...

    使用Aptana+Rails开发Rails Web应用(中文)

    安装过程中,遵循提示进行,确保选择自定义安装并勾选Rails相关的插件,以便在Aptana中获得对Rails的全面支持。 安装完成后,打开Aptana Studio,创建一个新的Rails项目。在“File”菜单中选择“New”然后点击...

    Rails

    标签 "源码" 暗示了可能涉及Rails的源代码分析或自定义扩展。Rails是开源的,开发者可以深入研究其内部机制,理解工作原理,甚至为框架贡献代码。 标签 "工具" 可能意味着讨论到了与Rails开发相关的工具,如集成...

    Ruby-ActiveModel的自定义验证用于检查数组是否包含在另一个中

    在Ruby开发中,ActiveModel是Rails框架的一部分,它提供了一种模型层的接口,使得非ActiveRecord对象也能具有类似于ActiveRecord的行为。这个标题提到的"Ruby-ActiveModel的自定义验证用于检查数组是否包含在另一个...

    Rails下运行PHP程序Phuby.zip

    项目的地址在https://github.com /tenderlove/phuby,尽管项目主持人Aaron发布了几个视频去证明phuby能让php在Rails下运行,但实际上在Rails社区 中,估计phuby也只是一个实验品而已。 标签:Phuby

    Rails进行敏捷Web开发(所有版本的源码rails3.0-4.0)

    此外,`rails generate scaffold`命令也变得更加灵活,可以自定义模板。 4. Rails 4.0: Rails 4带来了大量的改变和优化。最显著的是加入了Strong Parameters,提高了安全性,避免了Mass Assignment漏洞。另外,它...

    rails2-sample

    此外,Rails还内置了许多实用功能,如ActiveRecord(用于数据库交互)、Action View(用于页面渲染)和Action Controller(用于处理用户请求),这些都使得开发者能够快速构建出功能丰富的Web应用程序。 #### 2. ...

    Ruby on Rails实例开发

    在Rails中,Ruby的元编程能力使得框架能够灵活地自定义和扩展。 Rails的核心理念是DRY(Don't Repeat Yourself),鼓励代码重用,避免重复编写相似的代码。此外,它还提供了大量的内置功能和库,如ActiveRecord用于...

    Rails 3 in Action

    - **Asset Pipeline**:Rails 3.1引入了Asset Pipeline,将CSS、JavaScript、图片等静态资源管理整合到一个统一的流程中,提高了页面加载速度。 - **CoffeeScript**:默认使用CoffeeScript作为JavaScript的预...

    rails本地安装包完整版

    Rails 2.1.0引入了许多新特性,例如活动记录(ActiveRecord)的自动保存关联、部分渲染以及自定义验证选项等。 7. **activerecord-2.1.0.gem**:ActiveRecord是Rails中的ORM(对象关系映射)库,负责将数据库表映射...

    rails指南 中文版

    5. **Gemfile与Bundler**:Rails项目通常使用Gemfile来管理依赖库,Bundler工具则用于安装和管理这些依赖,确保在不同环境下项目的运行一致性。 6. **Scaffolding**:Rails提供了快速生成基本CRUD(Create, Read, ...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...

Global site tag (gtag.js) - Google Analytics