Я использую Rails 4.0.2. Я добавил подкаталоги (с названиями моделей) в каталог Concern:
- /приложение/модели/концерн/компания/кэш_концерн.рб
- /приложение/модели/концерн/пользователь/кэш_концерн.рб
- /app/models/concerns/document/cache_concern.rb
cache_concern.rb в каталоге компании имел следующее содержимое:
module Company::CacheConcern
included do
...
end
end
В моем классе моделей у меня было:
class Company
include Company::CacheConcern
...
end
Все было хорошо, пока я не пошел на производство. Затем я получил следующее исключение:
`load_missing_constant': Обнаружена циклическая зависимость при автозагрузке константы Company::CacheConcern (RuntimeError)
Чтобы решить мою проблему, я изменил пространство имен в своих файлах проблем с Company::CacheConcern на Concerns::Company::CacheConcern. Это позволяет мне загружать приложение в рабочей среде.
Но теперь у меня проблема в среде разработки в файле беспокойства в строке, где я использую класс компании:
NoMethodError (неопределенный метод `current_company' для Concerns::Company:Module):
Так что похоже, что он ищет в каталоге Concern. В производстве все нормально. Чтобы решить эту проблему, я мог бы добавить в соответствующие файлы два двоеточия перед именем класса, чтобы использовать класс из каталога моделей.
Я знаю, что производственный режим ведет себя не так, как разработка, из-за кэширования всего приложения в памяти. Я проверил все подобные сообщения. Нужно ли предварять имена классов из каталога модели двумя двоеточиями в файлах проблем? Буду очень признателен, если кто-нибудь объяснит мне эту странную ситуацию.
Спасибо