Я обновляю Rails 5.2.2 до Rails 6.0.0, который теперь имеет Zeitwerk * 1002 *.
Ранее у меня были расширенные базовые классы ruby, такие как Date, Time, String, Float и т. Д., Как описано в в этом вопросе .Использование файла инициализаторов для загрузки всех файлов из папки lib/core_ext/*
.При запуске rails server
он теперь выдает ошибку и читает последнюю строку стека:
/home/username/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/zeitwerk-2.1.10/lib/zeitwerk/loader.rb:351:in `const_get': uninitialized constant CoreExt::Date (NameError)
К сожалению, Zeitwerk вызывает ошибку, когда lib/core_ext/date.rb
и т. Д. Выдает ошибку, которая уже была определена (при использовании Rails.autoloaders.log!
в application.rb
. CoreExt::Date
С тех пор я переместил файлы непосредственно в initializers
(ранее у меня был только каталог инициализаторов с файлом, который загружал каждый файл из 'lib/core_ext/*
Папка). Это решило проблему на данный момент, но я хотел бы сохранить папку core_ext
и файлы там, где они были.
Что я здесь пропустил?
lib/core_ext/date.rb
class Date
def to_sap
strftime('%d.%m.%Y')
end
end
Я пытался явно обернуть в CoreExt
, но это не помогло.
module CoreExt
class Date
def to_sap
strftime('%d.%m.%Y')
end
end
end