ruby-on-rails Rails 7中的NameError(未初始化的常量错误)

yfwxisqw  于 2023-04-22  发布在  Ruby
关注(0)|答案(1)|浏览(213)

我最近将我的rails应用程序升级到rails 7,升级后,当我试图从lib文件夹调用调用时,我得到了这个错误NameError (uninitialized constant Error)
我在lib文件夹中有以下文件结构

lib
 -> a
 -> b
 -> c
 -> d
 -> error
    -> test_errors.rb

当我调用Error::TestErrors时,我得到了这个错误,我猜这个错误与Zeitwerk有关
谁能帮帮我
当我调用Error::TestErrors时,我得到了这个错误,理想情况下这应该工作,因为它在另一个分支上工作

baubqpgj

baubqpgj1#

常量Error::TestErrors在Rails 6.x中是自动加载的。因此,lib似乎在自动加载路径中,而lib/error/test_errors.rb似乎定义了预期的常量。
你得到的异常是NameError,因此,这个常量没有被自动加载。如果是,你会得到Zeitwerk::NameError。这个常量似乎被过早地访问,当自动加载还没有准备好。
我们没有足够的证据,但很可能问题只是在应用程序引导时引用了这个常量,也许是在初始化器中。这在Rails 6.0中已经被弃用,并在Rails 7.0中被删除。这是Rails中的概念性更改,与Zeitwerk无关。
如果这是正确的,请查看升级指南的这一部分,以了解如何更新初始化器。

相关问题