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)
例外が発生します。
クラスのリロードはRailsによって行われるので、このような問題にどのように対処する必要がありますか?
読むために同じ壁にぶつかる人にとって、これに対する解決策は厳密にRails autoloading rulesを尊重することです。つまり、
同じ名前の2つの懸念がある可能性もあります。
私の場合、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
同じ名前の2つのswaggerファイルがあったので。
module SwaggerDocs::TrackerPhases
extend ActiveSupport::Concern
included do
end
end
module SwaggerDocs::TrackerPhases
extend ActiveSupport::Concern
included do
end
end
2番目のファイルの名前を次のように変更しました。
module SwaggerDocs::ClientTrackerPhases
extend ActiveSupport::Concern
included do
end
end