在Rails 3.2中生产模式下检查500内部服务器错误

3

我在我的Linode账户中将应用程序设置为生产模式,但在某个页面上出现了500内部服务器错误消息:

We're sorry, but something went wrong.

但是在我的开发环境中,这个页面可以正常工作。

我该如何调试这个错误?

我应该如何在生产模式下查看错误源?

我希望Rails在生产模式下显示错误信息。

我该怎么做?

谢谢!


查看日志。应用程序/日志/production.log - Michael Berkowski
2个回答

6
如果您有 ssh 权限,则通过 ssh 登录到服务器并进入您的 rails 日志目录,该目录位于您的 rails 目录内。
一旦到达目录后,请运行命令 tail production.log。如果这不能给您足够的信息,您还可以执行 tail -n100 production.log(获取最后一百行生产日志)。
如果您是通过 heroku 部署的,则可以在本地控制台中运行 heroku logs 来访问日志。(更多信息请参见https://devcenter.heroku.com/articles/logging
我还发现在生产环境中使用 exception_notification gem https://github.com/rails/exception_notification 很有帮助,因为它会在发生错误时向您发送堆栈跟踪。许多人也使用 Hoptoad (http://hoptoadapp.com/) 或 Exceptional (http://www.exceptional.io/),但我更喜欢简单的 exception_notification gem。
此外,在某些罕见情况下,当我无法追踪错误时,我有时会在远程服务器防火墙上临时打开端口 3000 并切换到 rails 项目并运行 rails server production,并在 config/environments/production.rb 中将日志级别设置为 debug,以便在控制台中查看错误,然后在完成后关闭端口。
希望这些能够有所帮助。

1
谢谢,tail -n100 production.log 对我很有效 :D。非常感谢。 - hyperrjas
1
我的 production.log 文件是空的,我百分之百确定我在 production environment 中。我应该在哪里寻找问题? - IIllIIll

2
tail -n100 production.log

该命令仅显示日志文件的最后100行。以防您想实时查看日志。

使用此命令:

tail -1000f log/production.log

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接