我的应用程序在我的linode帐户中处于生产模式,我在一个页面中得到一个500内部服务器错误消息:
We're sorry, but something went wrong.
但是在我的开发环境中工作正常.
我该如何调试此错误?
如何在生产模式中查看错误原点?
我希望rails在生产模式下显示错误.
我该怎么做?
谢谢!
解决方法:
如果您有权访问ssh,请通过ssh登录到您的服务器并转到rails目录中的rails日志目录.
一旦你在那里运行命令tail production.log.如果这没有给你足够的信息,你也可以做一个tail -n100 production.log(给你生产日志的最后几百行).
如果已通过heroku部署,则可以通过在本地控制台中运行heroku日志来访问日志. (更多信息在这里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所以我可以在控制台中看到错误,然后在我完成后关闭端口.
希望有所帮助.