2012-05-21 15 views
5

Ho pensato di fare una cosa semplice ma potenzialmente molto utile, e creare un altro link simbolico chiamato live, che punta a una release arbitraria e lasciare corrente alla testa dove solitamente è:staging e live app con capistrano

20120519235508 
20120521004833 
20120521024312 <-- live 
20120521025150 
20120521030449 <-- current 

ho quindi configurato www.mysite.com a colpire

live/public 

e stage.mysite.com per colpire

current/public 

Purtroppo entrambi gli host sembrano eseguire la stessa app e non 2 app diverse. Ho confermato che httpd.conf ha le impostazioni corrette e lo riavviato. Comunque nessuna modifica, entrambi stanno ancora eseguendo la stessa app, l'app referenziata da corrente/pubblico per essere esatta.

Non so se ho un'impostazione sbagliata, o se qualcos'altro deve essere riavviato, o se semplicemente non può funzionare come immaginavo. Sto usando il passeggero.

Qualcuno può far luce su questo argomento, perché questa configurazione sarebbe MOLTO utile per molti progetti.

risposta

12

Invece di creare un altro collegamento simbolico nella directory releases, suggerisco di utilizzare l'estensione multistage. Con questa estensione puoi definire diverse fasi e aggiungere loro una configurazione personalizzata. Quindi, invece di utilizzare una directory di distribuzione sia per la staging che per la produzione, usarne una separata l'una per l'altra.

aggiungere queste righe al deploy.rb:

require "capistrano/ext/multistage" 

set :stages, ["staging", "production"] 
set :default_stage, "staging" 

rimuovere la variabile deploy_to da deploy.rb. Quindi creare una directory di distribuzione all'interno di config contenente i file con i nomi degli stage. In questo caso: deploy/staging.rb e deploy/production.rb. Il contenuto di staging.rb:

set :rails_env, "staging" 
set :deploy_to, "staging/capistrano" 

E allo stesso modo per production.rb:

set :rails_env, "production" 
set :deploy_to, "production/capistrano" 

Naturalmente modificare i percorsi in deploy_to. Quindi puntare staging.example.com a staging/capistrano/current/public e www.example.com a production/capistrano/current/public.

di fare una messa in scena implementare, eseguire cap staging deploy o semplici cap deploy (ricordate, messa in scena è stato impostato sul valore predefinito in deploy.rb) e cap production deploy per distribuire alla produzione.

+0

Gergo, questa è totalmente la strada da percorrere. Grazie per questo. Ho anche risolto il problema sopra btw, a causa della PassengerAppRoot nel file .htaccess. – pixelearth

+0

sembra che tu non abbia menzionato che devo installare la gemma capistrano-ext? – pixelearth

+0

Possibile. Era già disponibile sul mio sistema (OS X) quando ho iniziato ad usarlo, non ricordo che dovevo installarlo manualmente. –