Rails 6 не загружает модули и классы движка (Zeitwerk?)

На работе у нас обоих есть приложение MyApplication на Rails и гем / движок MyEngine, который предоставляет утилиты для MyApplication. Одна из целей MyEngine - обезьяна исправлять базовые классы ruby ​​и расширять их функциональностью, относящейся к MyApplication (например, хранящейся в my_engine/ app /monkeys/kernel.rb).

С нашей текущей настройкой rails 5.2.3 все отлично работает со следующей конфигурацией движка:

      #lib/my_engine/engine.rb

module MyEngine
  class Engine < ::Rails::Engine  
    config.eager_load_paths << "app/monkeys"
  end
end

Но при подключении движка к новой версии MyApplication rails 6.1.0 классы больше не загружаются eager_loaded, а методы с исправлением обезьяны дают неопределенный метод NoMethodError.

Я знаю, что rails 6.0 и более поздние версии внесли изменение в использование Zeitwerk для автозагрузки и постоянной загрузки констант, но через несколько дней после этого беспорядка я, к сожалению, все еще не могу настроить свой движок таким образом, чтобы он действительно работал с rails 6.1.0. Любая помощь или совет в самом широком смысле были бы очень, очень признательны!

0 ответов

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