2010-06-17 18 views
13

Sto provando a distribuire l'applicazione rails con capistrano, ma sto riscontrando qualche problema durante l'esecuzione delle mie migrazioni. Nel mio ambiente di sviluppo uso solo sqlite come database, ma sul mio server di produzione utilizzo MySQL.Esecuzione della migrazione sul server durante la distribuzione con capistrano

Il problema è che voglio che le migrazioni vengano eseguite dal mio server e non dalla mia macchina locale, dal momento che non sono in grado di collegarmi al mio database da una postazione remota.

Configurazione del mio server: Una casella debian che esegue ngnix, passenger, mysql e un repository git.

Qual è il modo più semplice per farlo?

aggiornamento:

Ecco il mio script deploy: (ho sostituito il mio dominio vero e proprio con example.com)

set :application, "example.com" 
set :domain, "example.com"   

set :scm, :git  
set :repository, "[email protected]:project.git" 

set :use_sudo, false 

set :deploy_to, "/var/www/example.com" 

role :web, domain 
role :app, domain 
role :db, "localhost", :primary => true 

after "deploy", "deploy:migrate" 

Quando eseguo berretto Deploy, tutto funziona bene fino a quando si cerca per eseguire la migrazione. Ecco l'errore che sto ricevendo:

 
** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2)) 
connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2))) 

Questo è il motivo per cui ho bisogno di eseguire la migrazione da server e non dalla mia macchina locale.

Qualche idea?

risposta

6

Hai aggiunto il tuo utente di distribuzione come utente mysql sul server? Suppongo che il localhost sia il server che si riferisce a se stesso e non alla macchina locale.

Inoltre non hanno definito l'utente nello script deploy:

set :user, "deploy_user_name" 

role :web, domain 
role :app, domain 
role :db, domain, :primary => true 
+0

Bene, il nome utente di distribuzione è lo stesso del mio nome utente locale. Inoltre, quando accedo ed eseguo la migrazione tramite ssh, funziona bene. – Pandafox

+0

Hmm. In realtà l'errore che hai postato è su update_code. Posso controllare, la tua applicazione è in realtà chiamata example.com, hai fatto il cap deployment: setup e cap deploy: check dal tuo computer locale? esempio.com è solo qualcosa che hai messo per la privacy qui lo prendo? – mark

+0

Heh, sì, ho sostituito il mio vero dominio con my example.com per la privacy. Il codice viene distribuito sul mio server bene, è solo che capistrano tenta di eseguire la migrazione sul mio computer locale e non sul server :) – Pandafox

41

tenta di aggiungere

after "deploy", "deploy:migrate" 

nel file di config/deploy.rb. Questo eseguirà una migrazione sul tuo server in seguito al successo della distribuzione del tuo progetto.

+0

Nel mio deploy.rb ho bundle_install compito, quindi sono l'uso 'dopo: bundle_install, "distribuire: migrare"' –

+1

Ha funzionato per me Assicurati che il commit sia inviato al ramo corretto del tuo repository in modo che abbia effetto. – scarver2

+1

@ denis.peplin Non capistrano fare il pacchetto per te comunque? Ho disinstallato una gemma tramite SSH e l'ho reinstallata automaticamente. – Besi

Problemi correlati