Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks) with cache_classes = true

纵饮孤独 提交于 2019-11-30 10:49:48

For anyone hitting the same wall to read, the solution to this is to strictly respect Rails autoloading rules. That is

  1. Removing all the require / require_relative
  2. Add needed paths to Rails autoload paths
  3. Put files at the right places with the right names so Rails can infer where to look for code to load.

More info here: https://github.com/rails/rails/issues/15767

It's also possible that you have two concerns with same name.

In my case I faced this error while running rails swagger:docs SD_LOG_LEVEL=1 .

$ rails swagger:docs SD_LOG_LEVEL=1

Cannot define multiple 'included' blocks for a Concern
1.0: 19 processed / 49 skipped

Since I had two swagger files with same name.

module SwaggerDocs::TrackerPhases
  extend ActiveSupport::Concern
  included do
  end
end

module SwaggerDocs::TrackerPhases
  extend ActiveSupport::Concern
  included do
  end
end

I renamed second file as:

module SwaggerDocs::ClientTrackerPhases
  extend ActiveSupport::Concern
  included do
  end
end 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!