2012-10-22 12 views
23

Nadal przyzwyczajam się do ekosystemu rozwoju Rails. Niedawno nauczyłem się, jak używać Capistrano do wdrażania na moich serwerach za pomocą Apache i Pasażera, i uwielbiam, jak mogę umieścić dość skomplikowany zestaw instrukcji wdrażania w moim deploy.rb, aby były wykonywane za pomocą jednego wywołania "cap deploy", z automatycznym wycofywaniem, jeśli coś pójdzie nie tak.Rozmieszczanie na Heroku z Capistrano?

Teraz zajmuję się wdrażaniem mojego projektu na Heroku i spodziewałem się, że będę mógł używać capistrano do moich wdrożeń. Ale nie udało mi się znaleźć żadnej dokumentacji, jak to zrobić. Czy to możliwe? Czy istnieją zadania Capistrano, które pozwalają mi automatyzować wdrożenia na Heroku?

Czy to ma nawet sens? Po wszystkim capistrano działa w określony sposób (ssh na serwer) i przyjmuje określoną strukturę katalogów (public/releases/shared etc). Oba nie są możliwe w Heroku, o ile wiem. Ale nadal chciałbym mieć wygodę capistrano. Wiem, że mogę umieścić kroki niezbędne do mojego wdrożenia (git push/migrate/restart pracowników resque ...) do jednego zadania rake, a ja miałbym wygodę wdrażania przy wywołaniu pojedynczego polecenia; ale nie miałbym korzyści z transakcji capistrano i wycofań, które są bardzo ważne w moim umyśle.

Prawdopodobnie brakuje mi czegoś bardzo podstawowego na temat tego, jak te technologie pasują do siebie. Trochę mnie to zaskakuje, że nigdzie nie mogłem znaleźć żadnej dyskusji na ten temat. Czy ktoś może podzielić się swoimi doświadczeniami?

Odpowiedz

35

Heroku używa Git do wdrożenia i nie jest przyjazny dla kapistów. W rzeczywistości sama filozofia jest inna - Heroku nie ma "serwerów", do których można SSH lub dostosowuje serwer do swoich potrzeb.

Heroku używa Dynos, które są predefiniowanymi instancjami, z określoną architekturą wdrażania, która obejmuje większość potrzeb wdrażania Rails. Możesz wykonywać akcje, takie jak wycofywanie zmian, kopie zapasowe, migracje itp. W Heroku, w niektórych przypadkach bardziej skomplikowane niż zwykłe skrypty capistrano.

Jeśli twoja konfiguracja nie jest całkiem inna, możesz bezpiecznie używać Heroku do Railsów (oczywiście tylko z Git). Jeśli nie, AWS to lepszy zakład.

+4

Heroku daje ci możliwość wycofywania, tworzenia kopii zapasowych i uruchamiania migracji, jak zrobiłby to system _any_. To ** nie ** oferuje sposób na zaaranżowanie/zautomatyzowanie całego procesu, jak robi to Capistrano. –

Powiązane problemy