voglio iniziare a testare il codice JavaScript nelle mie applicazioni Rails con qUnit e mi chiedo come mantenere il test JavaScript e la pagina HTML di prova corridore sotto il controllo di versione (Sto usando Git, ovviamente) ma li tengo dal server di produzione quando distribuisco l'app con Capistrano. Il mio primo pensiero è di lasciare che Capistrano invii tutto il codice come al solito, inclusi i file di test, e scriva un'attività per eliminarli alla fine del processo di distribuzione. Questo sembra una sorta di trucco, però. Esiste un modo più semplice per dire a Capistrano di ignorare certe parti del repository durante la distribuzione?Esclusione di file da essere schierato con Capistrano mentre ancora sotto il controllo di versione con Git
risposta
A partire dal 30 agosto 2013, è sufficiente creare un file .gitattributes
e export-ignore
i file/le cartelle di propria scelta.
features/ export-ignore
spec/ export-ignore
Riferimento: https://github.com/capistrano/capistrano/pull/626
Si potrebbe avere le prove in un ramo di prova (su cui è unire il ramo principale prima di ogni prova)
In questo modo, quando si chiede Capistrano di distribuire ciò che è sulla vostra ramo principale, nessun test di qualsiasi tipo è mai incluso
Ci sono molti modi per farlo, è possibile mantenere i test in un ramo di test dell'app come suggerito da VonC, ma ciò significherebbe che si farebbero tutte le modifiche nel ramo principale e quindi si sincronizzeranno con il test ramo. (Non senza i suoi meriti, ma a volte un dolore)
È possibile utilizzare il file .gitignore alla directory.
Qualsiasi file che si aggiunge a questo non verrà aggiunto al repository. Dal momento che capistrano tira e invia solo dal tuo repository, non avere i file inclusi li terrà fuori dal tuo server di produzione.
Ultimo ma non meno importante, se si desidera che i file di test nel repository principale per il controllo di versione, è possibile aggiungere una ricetta per il vostro file di configurazione/deploy.rb .. qualcosa di simile:
desc "Remove Test Files"
task :remove_test_files , :roles => :web do
sudo %{rm -f #{current_path}/public/javascripts/testfile.js}
sudo %{rm -f #{current_path}/public/javascripts/anothertestfile.js}
end
after 'deploy:remove_test_files'
E specificare i file che si desidera rimuovere, rimuoveranno tutti i file desiderati durante la distribuzione. :)
Qualsiasi dei precedenti funzionerà. Scegli il metodo che funziona per te.
non ho visto la tua risposta al momento. +1 – VonC
Grazie Von. Apprezzalo. –
@VonC & Dustin - Come raccomanderesti la gestione se i tuoi file cap sono nel tuo repository di distribuzione ma non li vuoi sul tuo server di produzione? Verrebbero distribuiti a releases/variable_directory_name – csi