modules mixin from another ruby require

mixin - ruby import class from another file



Ruby: Requerir un archivo de nuevo si se cambia (1)

He escrito una gema que busca en config/ para un archivo de configuración. Esto funciona bien, pero si el usuario cambia cualquier configuración, debe detener el programa y volver a iniciarlo antes de que mi gema cargue la nueva configuración. Esto requeriría que reinicien la aplicación Rails completa en cada cambio, lo que no es ideal.

¿Hay una manera de "volver a requerir" un archivo para que se cargue de nuevo en lugar de usar la versión en caché?


Puedes usar load lugar de require . Esto cargará el archivo sin importar si ya se cargó antes. Tenga en cuenta que con la load necesita especificar la extensión .rb que es opcional con require . Por lo tanto, require "path/to/myconfig" convierte en load "path/to/myconfig.rb" .

Tenga en cuenta que esto no anulará la definición de nada definido por la configuración anterior. Así que si la configuración se cambia de $verbose = true; $debug = true $verbose = true; $debug = true to $verbose = false entonces $verbose será false pero $debug seguirá siendo verdadero después de volver a cargar la configuración.

Por supuesto, deberá colocar la declaración de load lugar donde se ejecutará cada vez que se vuelva a cargar el archivo de configuración (es decir, dentro de algún método o enlace).