2012-05-18 4 views
5

Rails 3.2.3. Tengo una aplicación Rails con /lib en mis rutas de autocarga. Una de mis archivos de la biblioteca está requiriendo un montón de archivos al igual queForzar la recarga de los archivos de biblioteca que son necesarios para un archivo de biblioteca autocargado

Dir[Rails.root.join("lib/foo/*.rb")].each { |f| require f } 

En el desarrollo, esos archivos no se vuelven a cargar si los cambio. Por ejemplo, si modifico /lib/foo/bar.rb, tendré que reiniciar el servidor para ver esos cambios. ¿Alguien puede sugerir una forma para que en cada solicitud se recarguen correctamente?

Respuesta

3

Si tiene esos archivos en la ruta de carga automática:

config.autoload_paths += %W(#{config.root}/lib) 

entonces no debería tener que requerir ellos. ¿Has probado con this?

+1

Tienes una paren se arrastran! – Excalibur

3

require no funciona muy bien con el sistema de carga automática de rieles.

require_dependency hará bastante más de lo que requiere pero mantiene el sistema de carga automática en el bucle para que las constantes cargadas se descarguen al final de la solicitud. Es posible que deba asegurarse de que los archivos se encuentren en las rutas de carga automática de los rieles

+0

Una vez que eliminé 'require', la recarga se realizó automáticamente si se modificó el archivo del módulo. Gracias @Frederick Cheung –

0

Tiene que agregar o dejar un comentario en la línea.

config.autoload_paths + =% W (# {config.root}/lib)

a su clase de aplicación en config/application.rb

Cuestiones relacionadas