2012-06-15 16 views
5

In application.rb, hoRicarica rotaie initializers

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

Così, quando modifico una classe sotto lib, il mio codice viene ricaricato.

Tuttavia, quando ho provato ad aggiungere config/inizializzatori al caricamento automatico, ho notato che il mio codice non veniva aggiornato.

Se sto scrivendo un'estensione per la classe stringa, devo riavviare i binari ogni volta che modifico il mio codice.

Si prega di avvisare?

risposta

5

Gli inizializzatori vengono caricati solo all'avvio delle rotaie (e mai ricaricati). Quando si armeggia in config/initializers si dovrà riavviare ogni volta le rotaie.

Naturalmente è possibile assicurarsi che il proprio codice sia definito in /lib in modo da poter verificare che funzioni, utilizzando la propria suite di test.

E.g. in lib/speaker.rb scrivere

module Speaker 
    def speak 
    puts "Ahum, listen: #{self.to_s}" 
    end 
end 

e nel vostro inizializzatore si potrebbe poi fare qualcosa di simile

class String 
    include Speaker 
end 

Anche se questo sarà ancora ottenere caricato solo quando si inizia rotaie, è possibile sviluppare e testare il modulo più facilmente.

Spero che questo aiuti.

+1

Grazie mille! – Abdo

3

I file di inizializzatore vengono caricati una sola volta all'avvio del server di rotaie. Riavvia il server quando vengono modificati i valori di initialzers. Per ulteriori informazioni consultare le guide initialization guides.

Auto Ricarica 'lib' sul cambiamento

È possibile ricaricare i file di auto lib. Segui il collegamento Autoload and Reload lib directory on change

Nella configurazione di applicazioni per binari: config.reload_classes_only_on_change attiva o disattiva il ricaricamento delle classi solo quando i file di tracciamento cambiano. Di default traccia tutto su percorsi di autoload ed è impostato su true. Se config.cache_classes è true, questa opzione viene ignorata.

+0

Questa è la mia domanda; Non volevo riavviare il server. Volevo un modo migliore per eseguire il debug del mio codice. – Abdo

+0

(Ho appena visto il -1, non ero io =)) – Abdo

+0

paukul grazie per la modifica –