2009-07-11 18 views
20

¿Hay alguna manera en Rails de que el ENV vuelva a cargar los archivos "lib" sin tener que reiniciar el servidor? Estoy trabajando con algunas clases que tengo dentro de un módulo en "lib". Sin embargo, para ver mis cambios, debo reiniciar el servidor cada vez. Supongo que esta es la forma en que se pretende que Rails funcione, pero es bastante tedioso cuando se desarrollan los archivos de la biblioteca y/o los complementos.(Rails) Recargar archivos "lib" sin tener que reiniciar el servidor ...?

Seguramente me estoy equivocando ...?

Mejor

EDIT 1

Ninguna de las respuestas 1 ni el 2 trabajó para mí. En cambio, recibí errores de los controladores que hicieron uso del Módulo. FYI, tengo 3 archivos en mi directorio "lib/xmlitems". Intenté cargar ese subdirectorio y luego hice referencia al único archivo que "requiere" todos los demás archivos. ¿Debo cargar individualmente todos los archivos?

+0

Al mirar el objetivo duplicado, ninguna de las respuestas es particularmente buena. Como los duplicados requieren que se responda la pregunta en el objetivo, votaré para reabrir. –

Respuesta

-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 sus lib/* archivos y añadir config.autoload_paths += %W(#{config.root}/lib) en config/application.rb

-3

Hay una manera más fácil: sólo tiene que añadir

config.reload_plugins = true 

a development.rb

+0

Esto no funcionó para mí. –

13

Para Rieles 3 y Rails 4.0, modifique las instrucciones dadas en la respuesta de @ txwikinger. En su archivo environments/development.rb, agregue las líneas:

ActiveSupport::Dependencies.autoload_paths << File::join(Rails.root, 'lib') 
ActiveSupport::Dependencies.explicitly_unloadable_constants << '<my modules in lib>' 
+0

Cuando hice esto, estaba usando un módulo llamado :: Utils. Cuando ejecuté mi código, me dio un error, 'constante no inicializada ActionView :: CompiledTemplates :: Utils'. –

+0

Hm. ¿Podría poner su código en pastie.org y compartir un enlace? – JellicleCat

+0

Resulta que fue por mi culpa, aunque pensé que lo había aislado usando un git diff. Lo siento JellicleCat, desafortunadamente Stackoverflow bloqueado en mi -1. :(Todavía no puedo verificar su respuesta. –

Cuestiones relacionadas