2009-05-20 15 views
13

Questo è un seguito di questo question. Durante lo sviluppo devo riavviare l'app rails ogni volta che cambio il codice in lib/in modo che le modifiche al codice abbiano effetto. Come posso ricaricare automaticamente questo codice come controller, modelli, ecc.?Come si effettua il codice in lib/si ricarica automaticamente quando il file cambia?

+0

possibile duplicato di [(Rails) Ricarica di file "lib" senza dover riavviare il server ...?] (Http://stackoverflow.com/questions/1114388/rails-reloading-lib-files-without-having- to-restart-server) –

+0

possibile duplicato di [Ruby on Rails 3 - Ricarica directory lib per ogni richiesta] (http://stackoverflow.com/questions/3282655/ruby-on-rails-3-reload-lib-directory- per ogni richiesta) – shime

risposta

0

perché non basta immettere

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

questo funziona solo caricando ad es nel controller – ecoologic

+0

Errore a meno che non abbia usato 'join':' carica 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 

Per utilizzarlo, è sufficiente include ActsAsReloadable nella vostra lib file/* e aggiungere config.autoload_paths += %W(#{config.root}/lib) in config/application.rb

2

Per Rails 3, variare le istruzioni dato nell'articolo dalla risposta @ della scienza. Nel file environments/development.rb, aggiungere le righe:

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

Naturalmente, sostituire il nome del modulo per MyModuleInLibFolder.

+0

@ la risposta di scienza è stata cancellata come risposta di solo collegamento (il collegamento è marcito da allora, per quello che vale). –

Problemi correlati