2010-08-05 7 views
6

C'è un modo per ricaricare tutte le gemme in un'app Rails senza riavviare completamente il server? Ho un Gemfile che usa :path per fare riferimento a una dipendenza che sto sviluppando sullo stesso sistema, ed è fastidioso dover uccidere l'app e fare di nuovo rails -s ogni volta che salvi una modifica. Sarebbe anche bello in produzione essere in grado di aggiornare una gemma senza uccidere il server per qualche secondo. Pensieri?Come ricaricare tutte le gemme in Rails 3?

+0

Era questo capito? – Tom

+0

No, non ho mai avuto una buona risposta. –

risposta

6

Recentemente ho scoperto che mi piacerebbe fare lo stesso come dici tu, così posso sviluppare gemme insieme ai miei progetti.

In un Gemfile non ho incluso gemma dipendenza, ma invece ho aggiunto in config/ambienti/development.rb

ActiveSupport::Dependencies.autoload_paths << "/path_to_gem_dir/gem_name/lib" 

E mi obbliga a fare qualche lavoro in più con il che rende la sincronizzazione, ma in casi più comuni è ok. Quando ho finito di lavorare su una gemma posso rimuovere il caricamento automatico e utilizzare la dipendenza gem in Gemfile.

Ricordare che la dipendenza della gemma può essere inserita in : produzione,: prova gruppi, quindi in fase di sviluppo è stata pulita.

Per esempio

group :development do 
    # gem "wirble" COMMENTED!, so I can autoload files! 
end 

group :production do 
    gem "wirble" 
end 

codifica Felice!

+0

Grazie per il suggerimento! Vorrei aggiungere che se la gemma su cui stai lavorando ha dipendenze extra (nella gemspec), dovresti aggiungerle al gruppo di sviluppo del tuo gemfile altrimenti non verranno caricate. –

+0

Sì, puoi solo aggiungere sorgenti lì. Non sono ancora riuscito a trovare un modo completamente automatico per farlo, ma per ora sembra il più vicino :) – m4risU