我最近将我的rails应用程序升级到rails 7,升级后,当我试图从lib文件夹调用调用时,我得到了这个错误NameError (uninitialized constant Error)
我在lib文件夹中有以下文件结构
lib
-> a
-> b
-> c
-> d
-> error
-> test_errors.rb
当我调用Error::TestErrors
时,我得到了这个错误,我猜这个错误与Zeitwerk有关
谁能帮帮我
当我调用Error::TestErrors
时,我得到了这个错误,理想情况下这应该工作,因为它在另一个分支上工作
1条答案
按热度按时间baubqpgj1#
常量
Error::TestErrors
在Rails 6.x中是自动加载的。因此,lib
似乎在自动加载路径中,而lib/error/test_errors.rb
似乎定义了预期的常量。你得到的异常是
NameError
,因此,这个常量没有被自动加载。如果是,你会得到Zeitwerk::NameError
。这个常量似乎被过早地访问,当自动加载还没有准备好。我们没有足够的证据,但很可能问题只是在应用程序引导时引用了这个常量,也许是在初始化器中。这在Rails 6.0中已经被弃用,并在Rails 7.0中被删除。这是Rails中的概念性更改,与Zeitwerk无关。
如果这是正确的,请查看升级指南的这一部分,以了解如何更新初始化器。