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).