Неинициализированная константа в 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.,

Другие вопросы по тегам