2011-03-08 12 views
5

Używam Capistrano do wdrożenia aplikacji Rails. Myślę o sytuacji, w której były zmiany w bazie danych, więc nie mogę po prostu cap deploy, ponieważ migracje należy uruchomić przed zaktualizowaniem kodu. Zdaję sobie sprawę, że istnieje cap deploy:migrations, ale to trochę bardziej automatyczne niż bym chciał. Chciałbym:Capistrano wdrożyć, ale ręcznie uruchomić migracji

  1. Przenieś nowy kod do katalogu wydania, ale nie aktualizuj dowiązania symbolicznego lub zrestartuj aplikację.
  2. ssh do serwera, uruchom rake:db_abort_if_pending_migrations, aby upewnić się, że migracje, które chcę uruchomić, są jedynymi oczekiwanymi, a następnie uruchom ręcznie rake db:migrate.
  3. Dokończ instalację, aktualizując dowiązanie symboliczne i uruchamiając ponownie aplikację.

Czy istnieje prosty sposób, aby to zrobić z wbudowanymi zadaniami Capistrano lub czy muszę napisać własne kroki wdrażania, aby to osiągnąć?

Powinienem też wspomnieć, że myślę o przypadkach (takich jak dodawanie kolumn), w których migracja może być przeprowadzana w żywej bazie danych. W przypadku bardziej niszczycielskich zmian zdaję sobie sprawę, że muszę usunąć witrynę za pomocą strony konserwacji podczas wdrażania.

Odpowiedz

5

Spróbuj:

  1. cap deploy:update_code

  2. Rób to, co opisano zakładania konta do serwera ręcznie lub poprzez cap shell

  3. cap deploy:symlink deploy:restart

Zobacz cap -e deploy:update_code deploy:symlink deploy:restart deploy:shell aby uzyskać więcej informacji.

Mam nadzieję, że będzie to pomocne dla Ciebie.

+0

To powinno wystarczyć, dziękuję! Czy istnieje jakakolwiek dokumentacja dotycząca przepływu zadań w Capistrano (tj. Jakie pod-zadania wykonuje 'cap caploy' faktycznie w jakiej kolejności)? – jrdioko