2012-10-22 203 views
23

我仍然習慣於Rails開發生態系統。最近我學會了如何使用capistrano來使用apache和passenger來部署到我的服務器上,並且我非常喜歡我可以將一套相當複雜的部署指令放到我的deploy.rb中,以便通過一次「cap deploy」調用執行它們,如果出現任何問題,會自動回滾。用Capistrano部署在Heroku上?

現在我正在考慮在Heroku上部署我的項目,我希望能夠在那裏使用capistrano進行部署。但是我一直無法找到關於如何做到這一點的任何文檔。可能嗎?是否有Capistrano任務讓我在Heroku上自動部署?

這是否有意義?畢竟capistrano以特定的方式工作(ssh進入服務器),並假設一個特定的目錄結構(public/releases/shared等)。就我所知,這兩種方法對Heroku來說都是不可能的。但我仍然想擁有卡皮斯特拉諾的便利。我知道我可以將部署所需的步驟(git push/migrate/restart resque workers ...)放到一個rake任務中,我可以方便地通過調用單個命令進行部署;但我不會擁有Capistrano交易和回滾的好處,這在我看來非常重要。

我可能會錯過關於這些技術如何配合在一起的非常基本的東西。這令我感到驚訝,我無法在任何地方找到關於此主題的任何討論。誰能分享他們的經驗?

回答

35

Heroku使用Git進行部署,而不是對capistrano友好。事實上,哲學本身是不同的 - Heroku沒有「服務器」,您可以在其中進行SSH連接,或根據需要定製服務器。

Heroku使用Dynos,這是預定義的實例,具有特定的部署架構,覆蓋了大部分Rails部署需求。您可以使用Heroku執行回滾,備份,遷移等操作,在某些情況下,可以比普通的Capistrano腳本更復雜。

除非你的設置完全不同,否則你可以安全地使用Heroku for Rails(當然只有Git)。如果不是,AWS更好。

+4

Heroku爲您提供了一種回滾,備份和運行遷移的方式,就像_any_系統所做的那樣。它不**提供一種方式來協調/自動化所有過程,就像Capistrano所做的那樣。 –