2010-11-11 96 views
31

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

我已经在config/environments/development.rb尝试这样:

config.action_controller.consider_all_requests_local = false 

但是,这似乎并没有产生任何影响。

+1

会改变你的环境中生产的帮助吗? – Nuby 2011-03-10 18:00:40

+0

我个人认为最好切换到生产环境来测试错误页面。如果您在开发过程中始终禁用Rails的内置错误页面,您可能会更难以看到有价值的调试信息。 – 2013-11-20 02:43:27

回答

8

您可以:

  1. 访问使用除localhost或127.0.0.1其轨道的其他地址的应用程序缺省认为是本地请求
  2. 覆盖local_request?application_controller.rb喜欢的东西:
def local_request? 
    false 
end 

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

+0

'local_request?'在Rails 3及以后版本中已被弃用:http://apidock.com/ rails/ActionController/Rescue/local_request%3F – James 2012-03-05 20:33:06

+13

对于那些来自Google和使用Rails 3的人,请看下一个答案。 – corbin 2013-10-07 22:33:18

0

我想玩弄正确的设置是这样的:

config.action_view.debug_rjs = false 

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

+0

我现在都设置为false,但它仍然不起作用... – tbk 2010-11-11 20:05:17

+0

这对我没有任何效果 – u2622 2011-03-10 17:37:49

54

我发现要做到这一点,到目前为止的唯一方法是在development.rb

config.consider_all_requests_local = false

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

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

+0

有这么多关于Stackoverflow的答案。这是BY FAR最简单的方法。谢谢! – Eric 2012-02-09 22:11:39

+2

也适用于Rails 4.顺便说一句,它适用于我也使用127.0.0.1:3000/page_which_does_not_exist或localhost:3000/page_which_does_not_exist – Ben 2013-08-30 17:22:23

+0

不适用于我。我没有找到路由匹配而不是内部服务器错误。 – okysabeni 2014-03-06 20:49:56

22

无提出的解决方案在我的Rails应用程序3工作。对我来说,快速和肮脏的解决方案是直接打错误页面来查看呈现的HTML。例如,

http://0.0.0.0:3000/404.html 

http://0.0.0.0:3000/500.html 
+0

这应该是答案。这是最简单的解决方案! – pratski 2013-05-28 04:08:37

+0

它不适合我。我得到了500错误页面,但我看到它被rails服务器或开发日志记录下来。 – okysabeni 2014-03-06 20:53:21

3

您应该将以下行添加到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.action_controller.consider_all_requests_local = false配置/环境/ development.rb:

它将工作。请不要忘记在application_controller.rb中编写函数来为每个错误消息渲染布局。

+0

您也可以使用控制器顶部的'rescue_from'指令,如http://guides.rubyonrails.org/action_controller_overview.html#the-default-500-and-404-templates – dooleyo 2013-08-21 22:24:41

+0

ActionController :: UnknownAction不存在 – webdevguy 2016-03-16 21:37:08

15

只是做了http://localhost:3000/404或/ 500,以访问这些页面,看看他们是什么样子。

+2

对于那些只想测试这些页面设计的人来说,这是最短和最好的答案 – 2016-01-30 17:46:58

+0

我同意你的意见。 – 2016-01-31 22:48:59

1

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

0

,如果你只是想迫使一个500错误,看看是什么样子,你可以只添加这一个观点:

HAML例如:

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

添加一些解释和回答这个答案如何帮助OP在解决当前问题 – 2017-01-18 01:07:38

相关问题