J'ai un certain module qui est utilisé dans une application Rails 4.1.1
module A
extend ActiveSupport::Concern
included do
#Some code
end
end
qui est inclus dans une classe
class Some
include A
end
Cela fonctionne très bien avec cache_classes=true
Dans application.rb
. Maintenant, si je désactive la mise en cache des classes, j'obtiens Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks)
exception upson lors du démarrage du serveur.
Comment traiter un tel problème puisque le rechargement des classes se fait par Rails?
Pour quiconque frappe le même mur à lire, la solution est de respecter strictement les règles de Rails autoloading.
Plus d'informations ici: https://github.com/Rails/rails/issues/15767
Il est également possible que vous ayez deux problèmes avec le même nom.
Dans mon cas, j'ai rencontré cette erreur lors de l'exécution de 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
Depuis que j'avais deux fichiers swagger du même nom.
module SwaggerDocs::TrackerPhases
extend ActiveSupport::Concern
included do
end
end
module SwaggerDocs::TrackerPhases
extend ActiveSupport::Concern
included do
end
end
J'ai renommé le deuxième fichier comme:
module SwaggerDocs::ClientTrackerPhases
extend ActiveSupport::Concern
included do
end
end