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

时间:2012-05-19 11:10:47

标签: ruby-on-rails ruby-on-rails-3 ubuntu nginx unicorn

我的应用程序在我的linode帐户中处于生产模式,并且在一个页面中出现500内部服务器错误消息:

We're sorry, but something went wrong.

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

如何调试此错误?

如何在生产模式中查看错误来源?

我希望rails在生产模式中显示错误。

我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:4)

如果您有权访问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并cd到rails项目并使用日志级别运行rails server production设置为在config / environments / production.rb中调试,这样我就可以在控制台中看到错误,然后在完成后关闭端口。

希望有所帮助。

答案 1 :(得分:1)

tail -n100 production.log

只会显示日志文件的最后100行。以防您希望实时查看日志。

使用此

tail -1000f log/production.log