2009-05-20 13 views
13

Esto es un seguimiento de este question. Durante el desarrollo, tengo que reiniciar la aplicación Rails cada vez que cambio el código en lib/para que los cambios en el código surtan efecto. ¿Cómo consigo que este código se vuelva a cargar automáticamente como controladores, modelos, etc.?¿Cómo realizo el código en lib/recarga automáticamente cuando cambia el archivo?

+0

posible duplicado de [(Rieles) Recarga de archivos "lib" sin tener que reiniciar el servidor ...?] (Http://stackoverflow.com/questions/1114388/rails-reloading-lib-files-without-having- to-restart-server) –

+0

posible duplicado de [Ruby on Rails 3 - Recargar el directorio lib para cada solicitud] (http://stackoverflow.com/questions/3282655/ruby-on-rails-3-reload-lib-directory- para cada solicitud) – shime

Respuesta

0

por qué no acaba de entrar

load Rails.root + '/lib/your_lib.rb' 
+1

esto funciona simplemente cargando, por ejemplo en tu controlador – ecoologic

+0

Falló a menos que use 'join':' load Rails.root.join ('lib/your_lib.rb') ' –

1
module ActsAsReloadable 
    def self.included(base) 
    ActiveSupport::Dependencies.explicitly_unloadable_constants << base.name if Rails.env == 'development' 
    end 
end 

Para usarlo, simplemente include ActsAsReloadable en su lib archivos/* y añadir config.autoload_paths += %W(#{config.root}/lib) en config/application.rb

2

Para Rails 3, variar las instrucciones dado en el artículo de @ science's answer. En el archivo de environments/development.rb, agregue las líneas:

ActiveSupport::Dependencies.autoload_paths << File::join(Rails.root, 'lib') 
ActiveSupport::Dependencies.explicitly_unloadable_constants << 'MyModuleInLibFolder' 

Por supuesto, sustituir el nombre de su módulo para MyModuleInLibFolder.

+0

@ la respuesta de science ha sido eliminada como respuesta de solo enlace (el enlace se ha descompuesto, Por lo que vale). –

Cuestiones relacionadas