簡體   English   中英

顯示Rails錯誤頁面而不是模糊的Heroku錯誤頁面的方法

[英]Way to display Rails error page instead of vague Heroku error pages

在本地主機上開發Rails應用程序,每當出現錯誤時,您都可以在出現的Rails頁面上詳細查看該錯誤。 但是,在Heroku上,出現錯誤時唯一出現的是“很抱歉,但出了點問題”。 沒有任何信息。 我看過日志,但這似乎無濟於事。 有沒有辦法用詳細的Rails錯誤頁面替換該通用Heroku錯誤頁面?

這不是特定於heroku的問題,而是生產環境中的問題。 在任何生產設置中,可以通過在config/environments/production.rb更改此行來顯示完整的錯誤。

config.consider_all_requests_local = false

config.consider_all_requests_local  = true

請注意,一種更好的替代方法是繼續顯示生產樣式錯誤,並使用以下內容尾部記錄文件,以使用戶看不到該錯誤:

heroku logs --app <yourappname> --tail

這將運行日志文件流,因此您不會錯過任何事情,而不會錯過最后40行。

如果您沒有看到足夠的信息,請在config/environments/production添加或更改log_level以進行調試

config.log_level = :info

或者,您可以使用環境變量來重置日志級別,因此您可以刪除它並重新啟動,而不用重新部署:

heroku config:add LOG_LEVEL=DEBUG --app <yourappname>

這可以帶你去。

的routes.rb

match "/404", :to => "exceptions#some_error"
match "/500", :to => "exceptions#some_error"
#add some more?

所以呢

class ExceptionsController < ApplicationController

  def some_error
      @exception = env["action_dispatch.exception"]
      @status_code = ActionDispatch::ExceptionWrapper.new(env, @exception).status_code
  end

end

最后一個視圖頁面,要顯示某種異常,您將要修復。

在您的Rails應用中的config/environments/production.rb ,嘗試更改

config.consider_all_requests_local = false

config.consider_all_requests_local = true

注意:當您想查看正常的Rails錯誤消息時,您可能需要設置一個新環境並將其部署到Heroku。 也許是stagingtesting類的事情,因為您不希望用戶在實時站點上看到此類錯誤。

我感到你很痛苦。 嘗試運行heroku run rails console以獲得更清晰的錯誤。 希望能有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM