2010-06-17 9 views
13

Próbuję wdrożyć moją aplikację szyn z capistrano, ale mam problemy z uruchomieniem moich migracji. W moim środowisku programistycznym po prostu używam sqlite jako mojej bazy danych, ale na moim serwerze produkcyjnym używam MySQL.Uruchamianie migracji na serwerze podczas wdrażania za pomocą capistrano

Problem polega na tym, że chcę, aby migracje były uruchamiane z mojego serwera, a nie z mojego komputera lokalnego, ponieważ nie jestem w stanie połączyć się z bazą danych ze zdalnej lokalizacji.

Ustawienia mojego serwera: Debian box z uruchomionym programem ngnix, pasażerem, mysql i repozytorium git.

Jaki jest najprostszy sposób to zrobić?

zmiana:

Oto mój skrypt Deploy: (wymieniłem mojego prawdziwego domenę z 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" 

Kiedy biegnę cap wdrożenia, wszystko działa w porządku, dopóki nie próbuje uruchomić migrację. Oto błąd Dostaję:

 
** [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))) 

Dlatego trzeba uruchomić migrację z serwera, a nie z mojego komputera lokalnego.

Wszelkie pomysły?

Odpowiedz

6

Czy dodałeś użytkownika wdrażającego jako użytkownika mysql na serwerze? Sądzę, że localhost to serwer, który odnosi się do siebie, a nie do twojego lokalnego komputera.

Również nie zdefiniowano hasło użytkownika w skrypcie deploy:

set :user, "deploy_user_name" 

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

Cóż, nazwa użytkownika wdrożenia jest taka sama jak moja lokalna nazwa użytkownika. Ponadto po zalogowaniu się i uruchomieniu migracji przez ssh działa dobrze. – Pandafox

+0

Hmm. W rzeczywistości wysłany przez ciebie błąd dotyczy kodu aktualizacji. Czy mogę po prostu sprawdzić, czy twoja aplikacja jest rzeczywiście nazywana example.com, czy zrobiłaś wdrożenie cap: setup i cap deploy: sprawdź na swoim lokalnym komputerze? example.com jest czymś, co kładziesz tutaj na prywatność. Biorę to? – mark

+0

Heh, tak, zastąpiłem moją prawdziwą domenę moim example.com dla prywatności. Kod zostanie wdrożony na moim serwerze, w porządku, po prostu capistrano próbuje uruchomić migrację na moim lokalnym komputerze, a nie na serwerze :) – Pandafox

41

Spróbuj dodać

after "deploy", "deploy:migrate" 

w config/deploy.rb pliku. Spowoduje to uruchomienie migracji na serwerze po pomyślnym wdrożeniu projektu.

+0

W moim deploy.rb mam bundle_install zadanie, więc jestem użycie 'po: bundle_install "wdrożyć: migrować"' –

+1

Pracował dla mnie. Upewnij się, że zatwierdzenie zostało przekazane do właściwej gałęzi twojego repozytorium, aby mogło to wpłynąć na działanie. – scarver2

+1

@ denis.peplin Czy i tak capistrano nie robi dla ciebie pakietu? Odinstalowałem klejnot przez SSH i został on ponownie zainstalowany automatycznie. – Besi

Powiązane problemy