如何正确诊断500错误(Rails,Passenger,Nginx,Postgres)

Bri*_*ian 7 capistrano ruby-on-rails passenger nginx ruby-on-rails-3

我正在艰难地从生产中运行的应用程序中诊断出500错误.我之前已经开始工作了,但是在通过Capastrano重新部署之后我无法理解它.

以下是事实:

  1. 服务器是用nginx + passenger设置的,我正在使用PostgreSQL.
  2. 静态资产正常工作,因为我能够在浏览器中正常访问它们.
  3. 我可以通过rails控制台访问RAILS_ENV=production bundle exec rails console并执行Active Record操作(比如从数据库中检索数据).
  4. 在控制台中,我可以运行app.get("/"),它也返回500错误(在首次显示运行以加载模型的查询之后).
  5. 永远不会写入production.log文件.我已经为它设置了777权限.我还将日志级别设置为:debug,无需显示任何内容.
  6. nginx日志(乘客也使用)显示没有错误的迹象,它只是通知缓存未命中.

因为没有记录任何用途,我不知道该怎么做.我已经尝试在没有帮助的情况下在整个app目录上设置完全权限.多次重启服务器,什么都没有.数据库就在那里,rails可以清楚地与它通信.我不知道我做了什么让它第一次运行.我只是不知道为什么rails没有输出任何东西到日志.

Bri*_*ian 7

好的,我想出来了.该应用程序在开发模式下运行良好,因此我知道特定于生产的东西正在搞砸它.我进入了config/environments/production.rb并更改了这些设置:

# Full error reports are disabled and caching is turned on
config.consider_all_requests_local       = false # changed from true
config.action_controller.perform_caching = true # changed from false
Run Code Online (Sandbox Code Playgroud)

然后在重新启动乘客之后,rails向我展示了错误与堆栈跟踪.结果我忘了预编译资产管道了!