【问题标题】:Rails full error page not showing for view errorsRails 完整错误页面未显示视图错误
【发布时间】:2012-05-13 13:08:22
【问题描述】:

我有一个名为 new.html.erb 的视图,代码如下:

<%= some_non_existent_thing.imaginary_method %>

现在,我只看到一个简单的 500 错误页面,如下所示:

500 内部服务器错误
如果您是本网站的管理员,请阅读此 Web 应用程序的日志文件和/或 Web 服务器的日志文件以找出问题所在。

我不应该看到一个格式漂亮的页面,其中包含一些有关异常的信息吗?

我不确定我在这里遗漏了什么,但我相信当视图中有问题时,rails 会在开发环境中显示完整的错误页面。

【问题讨论】:

  • 所以,这发生在你的开发箱或 Heroku 之类的地方?

标签: ruby-on-rails error-handling views stack-trace


【解决方案1】:

您确定您正在运行开发环境吗?检查RAILS_ENV=development 或您正在运行rails server -e development

然后检查你的 development.rb 文件,你应该有以下行

config.consider_all_requests_local = true

【讨论】:

    【解决方案2】:

    首先,正如 Anton 在下面的答案中提到的,确认您的 config/environments/development.rb 具有:

    config.consider_all_requests_local = true
    

    并且您正在开发模式下运行服务器。

    我已确保上述内容,但仍然观察到错误。 这发生在我的案例中,因为我的记录器有一些错误。我使用的是自定义日志格式化程序,它使用String#% 方法来格式化日志。 % 似乎有很多错误,并导致所有这些奇怪的错误。我通过在控制器方法中添加debugger 行并逐步进入隐式渲染函数调用来解决这个问题。它遇到了错误并将其报告为malformed format string 错误。

    这是我之前使用的日志格式化程序,它导致了错误[我已将其添加到初始化文件中]:

    class Logger::SimpleFormatter
      def call(severity, time, progname, msg)
        "%-7s #{msg}\n" % severity
      end
    end
    

    这些修改修复了错误:

    class Logger::SimpleFormatter
      def call(severity, time, progname, msg)
        severity_prefix = "[#{severity}]".ljust(7)
        "#{severity_prefix} #{msg}\n"
      end
    end
    

    【讨论】:

      【解决方案3】:

      如果代码不可编译,例如如果您的 if 语句缺少结尾,就会发生这种情况。

      【讨论】:

      • 在开发中,它应该显示异常而不是 500 错误页面。
      【解决方案4】:

      如果你碰巧有一个异常中的异常,Rails 有一个middleware that catches it and returns a FAILSAFE_RESPONSE with the following copy

      500 内部服务器错误 如果您是本网站的管理员,请阅读此 Web 应用程序的日志文件和/或 Web 服务器的日志文件以找出问题所在。

      解决此问题的一个好方法是将您的自定义错误代码与Rails 4.2.0 guides 中提供的示例代码进行比较。

      我指的是那个特定版本,因为整个部分已在 Rails 5.0.0 guides 中删除。

      理想情况下,您应该尽可能地保持错误视图、布局和控制器没有逻辑,以避免遇到此问题。

      【讨论】:

        猜你喜欢
        • 2014-05-12
        • 1970-01-01
        • 2014-03-15
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 2015-05-03
        • 1970-01-01
        相关资源
        最近更新 更多