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

hyp*_*jas 3 ubuntu ruby-on-rails nginx unicorn ruby-on-rails-3

我的应用程序在我的 linode 帐户中处于生产模式,我在一页中收到 500 内部服务器错误消息:

We're sorry, but something went wrong.
Run Code Online (Sandbox Code Playgroud)

但是在我的开发环境中,这个页面运行良好。

我该如何调试这个错误?

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

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

我该怎么做?

谢谢!

ADA*_*DAM 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,然后将 cd 转到 rails 项目,rails server production并在日志级别设置为调试的情况下运行 config/environments/ production.rb 以便我可以在控制台中看到错误,然后在完成后关闭端口。

希望有帮助。