7

我有一个new.html.erb用以下代码命名的视图:

<%= some_non_existent_thing.imaginary_method %>

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

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

我不应该看到一个包含一些关于异常的信息的格式化页面吗?

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

4

4 回答 4

7

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

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

config.consider_all_requests_local = true
于 2013-03-22T10:23:56.817 回答
0

首先,正如安东在下面的答案中提到的,确认您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
于 2013-03-21T17:08:33.303 回答
0

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

于 2013-10-31T20:20:39.850 回答
0

如果您碰巧在异常中遇到异常,Rails 有一个中间件可以捕获它并返回 FAILSAFE_RESPONSE 并带有以下副本

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

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

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

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

于 2021-09-03T10:59:14.900 回答