Подтвердить что ты не робот

Невозможно определить несколько "включенных" блоков для Концерна (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?

4b9b3361

Ответ 1

Для того, чтобы кто-то ударил одну и ту же стену, чтобы прочитать, решение этого - строго соблюдать правила автозагрузки Rails. Это

  • Удаление всех требований /require _relative
  • Добавьте необходимые пути в пути автозагрузки Rails
  • Поместите файлы в нужные места с правильными именами, чтобы Rails мог определить, где искать загружаемый код.

Дополнительная информация здесь: https://github.com/rails/rails/issues/15767