Невозможно определить несколько "включенных" блоков для Концерна (ActiveSupport:: Concern:: MultipleIncludedBlocks) с cache_classes = true
У меня есть определенный модуль, который используется в приложении Rails 4.1.1
module A
extend ActiveSupport::Concern
included do
#Some code
end
end
который входит в класс
class Some
include A
end
Это отлично работает с cache_classes=true
в application.rb
. Теперь, если я отключу кеширование классов, я получаю Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks)
исключение upson, запускающее сервер.
Как решить такую проблему, поскольку перезагрузка классов выполняется с помощью Rails?
Ответы
Ответ 1
Для того, чтобы кто-то ударил одну и ту же стену, чтобы прочитать, решение этого - строго соблюдать правила автозагрузки Rails. Это
- Удаление всех требований /require _relative
- Добавьте необходимые пути в пути автозагрузки Rails
- Поместите файлы в нужные места с правильными именами, чтобы Rails мог определить, где искать загружаемый код.
Дополнительная информация здесь: https://github.com/rails/rails/issues/15767