ruby on rails - rodillera - No se pueden definir varios bloques ''incluidos'' para una Preocupación(ActiveSupport:: Concern:: MultipleIncludedBlocks) con cache_classes=true
concerns ruby on rails (2)
Para cualquier persona que golpee el mismo muro para leer, la solución a esto es respetar estrictamente las reglas de carga automática de Rails. Es decir
- Eliminando todo el require / require_relative
- Agregue las rutas necesarias a las rutas de carga automática de Rails
- Coloque los archivos en los lugares correctos con los nombres correctos para que Rails pueda inferir dónde buscar el código para cargar.
Más información aquí: https://github.com/rails/rails/issues/15767
Tengo un módulo determinado que se utiliza en una aplicación Rails 4.1.1
module A
extend ActiveSupport::Concern
included do
#Some code
end
end
que está incluido en una clase
class Some
include A
end
Esto funciona muy bien con cache_classes=true
en application.rb
. Ahora, si desactivo el almacenamiento en caché de clases, no Cannot define multiple ''included'' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks)
inicia el servidor.
¿Cómo debería uno lidiar con un problema de este tipo ya que Rails realiza la recarga de las clases?
También es posible que tenga dos preocupaciones con el mismo nombre.
En mi caso, me enfrenté a este error mientras corría los 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
Desde que tenía dos archivos swagger con el mismo nombre.
module SwaggerDocs::TrackerPhases
extend ActiveSupport::Concern
included do
end
end
module SwaggerDocs::TrackerPhases
extend ActiveSupport::Concern
included do
end
end
Cambié el nombre de segundo archivo como:
module SwaggerDocs::ClientTrackerPhases
extend ActiveSupport::Concern
included do
end
end