@Fly3110
web developer

Почему rails eager_load не подключает классы с одинаковыми именами, но из разных пространств имен?

Всем привет.

Есть приложение и гем, которые это приложение использует.
В геме есть следующие файлы

lib/provider1/class_name.rb
module Provider1
  class ClassName
    ...
  end
end


lib/provider2/class_name.rb
module Provider2
  class ClassName
    ...
  end
end


Как видно, имя у классов одинаковое, пространство имен разное. в config.eager_load_paths (в engine.rb гема) указаны оба каталога. В девелопменте все работает. В продакшене автоматически доступен только класс из каталога, указанного первым.

Что я делаю не так?

Заранее спасибо
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
@unabl4
ruby on rails web dev
Мне кажется, не надо указывать эти каталоги - достаточно только сам каталог "lib", тогда оба класса будут доступны через их именные пространства Provider1::ClassName, Provider2::ClassName. Если указывать конечные каталоги, то он их подгрузит в ClassName безотносительно именного пространства и тогда возникнет каша, потому что имена классов одинаковые.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы