【问题标题】:Way to display Rails error page instead of vague Heroku error pages显示 Rails 错误页面而不是模糊 Heroku 错误页面的方式
【发布时间】:2025-12-26 12:40:07
【问题描述】:

在 localhost 上开发 rails 应用程序,每当出现错误时,您都可以在出现的 rails 页面上详细查看错误。但是,在 Heroku 上,出现错误时唯一出现的信息是“我们很抱歉,但出了点问题”。没有任何信息。我看过日志,这似乎没有帮助。有没有办法用详细的 Rails 错误页面替换通用 Heroku 错误页面?

【问题讨论】:

    标签: ruby-on-rails heroku


    【解决方案1】:

    这不是 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>
    

    【讨论】:

      【解决方案2】:

      这可以让你继续前进..

      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
      

      最后一个视图页面,显示某种异常,你将修复。

      【讨论】:

        【解决方案3】:

        在您的 rails 应用程序中,在 config/environments/production.rb 下,尝试更改

        config.consider_all_requests_local = false

        config.consider_all_requests_local = true

        注意:当您想查看正常的 rails 错误消息时,您可能需要设置一个新环境并将其部署到 Heroku。可能是 stagingtesting 之类的东西,因为您不希望用户在实时网站上看到此类错误。

        【讨论】:

          【解决方案4】:

          我感觉到你的痛苦。尝试运行heroku run rails console 以获得更清晰的错误。希望有帮助

          【讨论】:

            最近更新 更多