如何在rails开发环境中测试500.html?

时间:2010-11-11 16:10:53

标签: ruby-on-rails development-environment

我想使用开发环境在我的Rails应用程序中测试500个错误页面。

我已经在config/environments/development.rb中尝试了这个:

config.action_controller.consider_all_requests_local = false

但这似乎没有任何效果。

8 个答案:

答案 0 :(得分:72)

到目前为止,我发现这样做的唯一方法是设置development.rb

config.consider_all_requests_local = false

然后使用我的本地IP地址访问网址:http://192.168.1.135:3000/blah

提到的其他设置似乎没有任何效果。

答案 1 :(得分:25)

所提出的解决方案都没有在我的Rails 3应用程序中运行。对我来说,快速而肮脏的解决方案是直接点击错误页面以查看呈现的HTML。例如,

http://0.0.0.0:3000/404.html

http://0.0.0.0:3000/500.html

答案 2 :(得分:20)

只需执行http://localhost:3000/404或/ 500即可访问这些页面,看看它们的外观。

答案 3 :(得分:12)

你可以:

  1. 使用localhost或127.0.0.1以外的地址访问应用程序,rails默认认为是本地请求
  2. local_request?中的application_controller.rb覆盖为:
  3. def local_request?
      false
    end
    

    第二个将停止rails处理来自localhost和127.0.0.1的请求,因为与consider_all_requests_local = false结合的本地请求应该显示您的500.html页面。

答案 4 :(得分:4)

您应该将以下行添加到application_controller,

unless  ActionController::Base.consider_all_requests_local
    rescue_from Exception, :with => :render_500
    if  ActiveRecord::RecordNotFound
      rescue_from Exception, :with => :render_404
    end
    rescue_from ActionController::RoutingError, :with => :render_404
    rescue_from ActionController::UnknownController, :with => :render_404
    rescue_from ActionController::UnknownAction, :with => :render_404
end

然后尝试使用以下设置运行。

config / environments / development.rb:

中的

config.action_controller.consider_all_requests_local = false

它会起作用。请不要忘记在 application_controller.rb 中编写函数来呈现每个错误消息的布局。

答案 5 :(得分:4)

除了设置: config.consider_all_requests_local = false 我还需要设置: config.action_dispatch.show_exceptions = true

答案 6 :(得分:0)

我认为正确的设置是:

config.action_view.debug_rjs = false

为什么它仍然被标记为rjs并不完全清楚。

答案 7 :(得分:0)

如果您只想强制500错误以查看它的外观,您只需将其添加到视图中:

haml示例:

= render :partial => "broken", :status => 500