ruby-on-rails - 如何正确诊断 500 错误(Rails、Passenger、Nginx、Postgres)

标签 ruby-on-rails ruby-on-rails-3 nginx passenger capistrano

我真的很难从生产中运行的应用程序中诊断出 500 错误。我以前使用过它,但是在通过 Capastrano 重新部署后,我无法让它继续运行。

以下是事实:

  • 服务器是用 nginx +passenger 设置的,我正在使用
    PostgreSQL。
  • 静态 Assets 工作正常,因为我可以在浏览器中很好地访问它们。
  • 我可以通过 RAILS_ENV=production bundle exec rails console 访问 rails 控制台并执行 Active Record 操作(例如
    从数据库中检索数据)。
  • 在控制台中,我可以运行 app.get("/") ,它也会返回 500 错误(在首先显示为加载而运行的查询之后
    该模型)。
  • production.log 文件永远不会写入。我已经为它设置了权限 777 只是为了它。我还将日志级别设置为
    :debug 没有什么可显示的。
  • nginx 日志(乘客也使用)没有显示错误迹象,它只是通知缓存未命中。

  • 因为没有记录任何有用的东西,我不知道在这里做什么。我试过在没有帮助的情况下对整个应用程序目录设置完全权限。多次重启服务器,什么都没有。数据库就在那里,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/

    相关文章:

    mysql - 使用遗留脚本将旧的 php 站点数据库迁移到 Rails 并保留旧的 ID

    php - Nginx 将丢失图像的请求发送到后端

    docker - nginx 后面的 Identityserver4 带有 https 并在 AKS(azure kubernetes)中加密,防止 mvcclient 由于某种原因设置 cookie

    ruby-on-rails - Ruby 2.3.3 : Weird Tempfile. new([name, prefix]) basename converted to hash

    ruby-on-rails-3 - 未初始化的常量图标

    ruby-on-rails - 为什么Puma只绑定(bind)tcp6? (通过 `rails s` )

    ruby-on-rails - 使用 MetaSearch 在 Rails 3 中按关联进行搜索

    docker - 更新话语后如何解决502 Bad Gateway问题?

    ruby-on-rails - 使用 SQLite 在本地运行,但在 Heroku : PGError: ERROR: syntax error at or near "NULL" 上运行

    mysql - 将数据从 excel 文件写入数据库 (mysql) 时出现编码错误