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
- Przenieś nowy kod do katalogu wydania, ale nie aktualizuj dowiązania symbolicznego lub zrestartuj aplikację.
- 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ęcznierake db:migrate
. - 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.
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