Неинициализированная константа в My::Engine после изменения файла
Я разрабатываю драгоценный камень / двигатель. Я делаю это, связывая его в тестовом RailsApp из исходного кода:
# Gemfile
gem 'my-engine', path: '../local/path/to/gem'
Это работает отлично до сих пор.
Но после того, как я изменил файл в моем геме (например, добавил пробел или разрыв), Engine выгружается. Вызывает следующую ошибку:
uninitialized constant My::Engine
Эта ошибка вызывается файлом, который делает первый вызов My::Engine
, (Мне нужно позвонить, чтобы получить рут: My::Engine.root
) Если я удаляю эту строку, не выдается никакой ошибки, а отображается только пустая страница, и это происходит потому, что все изменения в моем SQL и никакой контент не загружаются из базы данных. Я думаю, что это потому, что файлы в lib
dir выгружаются, потому что в этих файлах я динамически создаю модели с активной записью..
Я уже проверил autoload_paths
а также watchable_dirs
:
# engine.rb
module My
class Engine < Rails::Engine
engine_name 'my-engine'
initializer "my-engine.load_config" do |app|
app.config.autoload_paths += %W(#{Engine.root}/lib)
app.config.watchable_dirs["#{Engine.root}/lib"] = [:rb]
end
end
end
Я не уверен, правильно ли я их реализую, но они, похоже, не решают мои проблемы так, как я их использую.
1 ответ
Я думаю, что вам может потребоваться запросить "my/engine" перед вызовом My::Engine.root или изменить порядок ваших требований так, чтобы "my/engine" требовался до файла, который вызывает My:: Engine.,