2010-06-29 13 views
5

Sto usando capistrano per implementare il mio progetto Ruby on Rails. Sono su un VPS Dreamhost e da qualche settimana, senza modifiche a capistrano o passeggero, ho iniziato a sperimentare uno strano problema con la distribuzione:Distribuisci: symlink su capistrano punta la directory "corrente" alla precedente versione

Ogni volta che capistrano distribuisce la mia applicazione, tutto va bene tranne la distribuzione: symlink (che viene chiamato di default) che dovrebbe puntare la directory "corrente" alla nuova release. Sebbene la nuova versione sia distribuita correttamente nella directory "releases", il problema è che il collegamento simbolico "corrente" è sempre impostato sulla versione precedente anziché su quella nuova. Quindi posso distribuire app, ma devo sempre eseguire il deploy due volte di seguito.

È possibile visualizzare il registro Capistrano qui: http://img715.imageshack.us/img715/7803/capistranoproblemb.png

Ha chiunque altro sperimentato prima o può aiutarmi a risolverlo?

Grazie!

risposta

6

Ho risolto questo problema con un'attività di distribuzione aggiuntiva che ricrea il collegamento simbolico utilizzando un nome di variabile interno diverso con il percorso corretto per l'ultima versione (release_path anziché latest_path o qualcosa del genere).


namespace :deploy do 
    desc "Recreate symlink" 
    task :resymlink, :roles => :app do 
    run "rm -f #{current_path} && ln -s #{release_path} #{current_path}" 
    end 
end 

after "deploy:create_symlink", "deploy:resymlink", "deploy:update_crontab" 
+4

Nell'ultimo Capistrano, è 'deploy: create_symlink' invece di' deploy: symlink'. – manafire

+2

Per favore cambia la risposta accettata a quella data da @knocte. Il kludge di cui sopra potrebbe funzionare, ma è un odore di codice. – JellicleCat

+0

@JellicleCat: quale versione di capistrano stai usando? – knocte

6

Penso che la risposta di @ foresth non sia una buona soluzione.

Penso che quello che succede è che stai vivendo this horrible bug di capistrano.

Il modo di lavorare intorno il bug è la seguente: NON LEGGERE IL latest_release VARIABILE prima che l'attività deploy ACCADE.

+0

Questa dovrebbe essere la risposta accettata. La regolazione delle mie attività personalizzate in base a questo bug ha risolto il problema. – brendan

+0

@brendan: quale versione di capistrano hai riprodotto con il bug? mi stanno chiedendo che nel problema github che ho collegato ... – knocte

+0

Sembra che sia stato 2.15.4 @knocte – brendan

Problemi correlati