2010-07-05 18 views
22

He escrito una joya que se ve en config/para un archivo de configuración, este bit funciona bien y no presenta ningún problema, pero si el usuario cambia alguna configuración tienen que detener el programa y Comience de nuevo antes de que mi gema cargue la nueva configuración, lo que requeriría que reinicien una aplicación de rieles cada cambio, lo cual no es ideal.requiere un archivo de nuevo si ha cambiado

¿hay una manera de "volver a requerir" un archivo para que cada carrera se carga hacia arriba fresca en lugar de utilizar la versión en caché

Respuesta

41

Se puede utilizar en lugar de loadrequire. Esto cargará el archivo independientemente de si ya se cargó antes. Tenga en cuenta que con load debe especificar la extensión .rb que es opcional con require. Entonces, require "path/to/myconfig" se convierte en load "path/to/myconfig.rb".

Tenga en cuenta que esto no va a definir nada definido por la configuración anterior. Por lo tanto, si la configuración se cambia de $verbose = true; $debug = true a $verbose = false, entonces $verbose será falso, pero $debug seguirá siendo verdadero después de volver a cargar la configuración.

Por supuesto, tendrá que poner la declaración load en algún lugar donde se ejecutará cada vez que se debe volver a cargar el archivo de configuración (es decir, dentro de algún método o gancho).

Cuestiones relacionadas