2010-11-11 97 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

相關問題