【问题标题】:NameError - unitilaized constant - only in productionNameError - 统一常量 - 仅在生产中
【发布时间】:2021-02-01 20:38:31
【问题描述】:

我有一个托管在 heroku 上的 ruby​​ on rails 应用程序。当我尝试创建一个以“开发”模式运行它的项目时,一切正常,没有问题。但是,当我将应用程序切换为在“生产”模式下运行时,我得到以下信息。

这是升级到 2.5.x 的 Ruby 2.2.x 和升级到 5.2 的 rails 4.1。

关于为什么这在生产中失败但在开发中运行良好的任何想法或建议?

Started POST "/items" for 1.2.3.4 at 2020-10-19 03:22:06 +0000
2020-10-19T03:22:06.870055+00:00 app[web.1]: Processing by ItemController#create as HTML
2020-10-19T03:22:06.870358+00:00 app[web.1]:   Parameters: {###Redacted##}
2020-10-19T03:22:06.926046+00:00 app[web.1]: Completed 500 Internal Server Error in 54ms (ActiveRecord: 15.8ms)
2020-10-19T03:22:06.999133+00:00 app[web.1]: I, [2020-10-19T03:22:06.998984 #11]  INFO -- : Sending event 18b887c876d4524b5cd46849a98aaeb1 to Sentry
2020-10-19T03:22:07.271068+00:00 app[web.1]:   
2020-10-19T03:22:07.271478+00:00 app[web.1]: NameError (uninitialized constant #<Class:0x0000567238d68165>::Slug):
2020-10-19T03:22:07.276183+00:00 app[web.1]:   
2020-10-19T03:22:07.276248+00:00 app[web.1]: app/models/item.rb:305:in `name_to_slug'
2020-10-19T03:22:07.276248+00:00 app[web.1]: app/models/item.rb:293:in `generate_slug'

【问题讨论】:

  • 您可以使用heroku run rails c SSH 进入生产框,然后尝试手动运行导致错误的代码。这将向您显示有关正在发生的事情的更多信息。它可能必须做一个不需要的文件或其他东西 - 我不记得确切的细节,但我认为开发和生产可以以不同的顺序加载文件或其他东西。也许你只是在某个地方需要一个额外的require
  • 您是否缺少生产环境变量? devcenter.heroku.com/articles/config-vars
  • @ToddA.Jacobs 我不这么认为......如果我将 RACK_ENV 和 RAILS_ENV 从生产更改为开发,它会按预期工作。

标签: ruby heroku ruby-on-rails-4 ruby-on-rails-5


【解决方案1】:

我将此追溯到位于“lib”文件夹中的自定义类。从 Rails 4 迁移到 5,似乎一些行为随着加载需要考虑的自定义类而改变:

https://gist.github.com/maxivak/381f1e964923f1d469c8d39da8e2522f

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多