Я решил эту проблему с помощью оператора require в инициализаторе.Мне это не очень нравится, но мне понравились структура и имена классов моего приложения, они имели смысл, поэтому инициализатор был моим лучшим решением.В инициализаторе попробуйте:
require File.join(Rails.root, "app", "presenters", "mega_menu", "catalog_presenter")
require File.join(Rails.root, "app", "presenters", "catalog_presenter")
Эта проблема возникает из-за того, что автозагрузка выполняется при вызове const_missing, что не произойдет в вашем случае.
Когда ruby впервые обнаруживает ссылку на MegaMenu :: CatalogPresenter, файл mega_menu / catalog_presenter.rb не был включен.Стандартное поведение ruby заставляет его пройтись по дереву пространства имен (фигуре речи), и вместо этого он находит ссылку на каталог верхнего уровня CatalogPresenter, так как это было включено в этот момент.