我真的很难从生产中运行的应用程序中诊断出 500 错误。我以前使用过它,但是在通过 Capastrano 重新部署后,我无法让它继续运行。
以下是事实:
PostgreSQL。
RAILS_ENV=production bundle exec rails console
访问 rails 控制台并执行 Active Record 操作(例如从数据库中检索数据)。
app.get("/")
,它也会返回 500 错误(在首先显示为加载而运行的查询之后该模型)。
:debug 没有什么可显示的。
因为没有记录任何有用的东西,我不知道在这里做什么。我试过在没有帮助的情况下对整个应用程序目录设置完全权限。多次重启服务器,什么都没有。数据库就在那里,rails 可以清楚地与它通信。我不确定我做了什么才能让它第一次运行。我只是不知道为什么 rails 没有向日志输出任何内容。
最佳答案
好的,我想通了。该应用程序在开发模式下运行良好,所以我知道某些特定于生产的东西把它搞砸了。我进入了 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
然后在重新启动乘客后,rails 向我显示了带有堆栈跟踪的错误。结果我忘了预编译 Assets 管道!
关于ruby-on-rails - 如何正确诊断 500 错误(Rails、Passenger、Nginx、Postgres),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9970028/