NameError (неинициализированная константная ошибка) в Rails 7
Недавно я обновил свое приложение Rails до Rails 7, и после обновления, когда я пытаюсь вызвать вызов из папки lib, я получаю эту ошибкуNameError (uninitialized constant Error)
У меня есть следующая файловая структура в папке lib
lib
-> a
-> b
-> c
-> d
-> error
-> test_errors.rb
всякий раз, когда я звоню, я получаю эту ошибку, я думаю, эта ошибка связана с Zeitwerk
Может кто-нибудь, пожалуйста, помогите мне с этим
всякий раз, когда я звонюError::TestErrors
Я получил эту ошибку, в идеале это должно работать, и поскольку оно работает в другой ветке
1 ответ
КонстантаError::TestErrors
был автоматически загружен в Rails 6.x. Поэтому,lib
кажется, находится в путях автозагрузки иlib/error/test_errors.rb
кажется, определяет ожидаемую константу.
Исключением, которое вы получаете, являетсяNameError
, следовательно, эта константа не загружается автоматически. Если бы это было так, вы бы получилиZeitwerk::NameError
. Похоже, что доступ к этой константе осуществляется преждевременно, когда автозагрузка еще не готова.
У нас недостаточно доказательств, но вполне вероятно, что проблема просто в том, что на эту константу ссылаются во время загрузки приложения, возможно, в инициализаторе. Это устарело начиная с Rails 6.0 и удалено в Rails 7.0. Это концептуальное изменение в Rails, не связанное с Zeitwerk.
Если это так, пожалуйста, прочтите этот раздел руководства по обновлению, чтобы понять, как обновить инициализатор.