2011-03-08 93 views
5

我正在使用Capistrano部署Rails應用程序。我正考慮數據庫發生更改的情況,因此我不能簡單地使用cap deploy,因爲在代碼更新之前需要運行遷移。我意識到有一個cap deploy:migrations,但這比我想要的更自動一點。我想要:Capistrano部署但手動運行遷移

  1. 將新代碼推送到releases目錄,但不更新符號鏈接或重新啓動應用程序。
  2. ssh進入服務器,運行rake:db_abort_if_pending_migrations以確認我想運行的遷移是唯一未決的遷移,然後手動運行rake db:migrate
  3. 完成部署,更新符號鏈接並重新啓動應用程序。

是否有任何簡單的方法可以通過內置的Capistrano任務來完成此任務,還是我需要編寫自己的部署步驟來完成此任務?

我也應該提到,我正在考慮可以在實時數據庫上運行遷移的情況(如添加列)。對於更具破壞性的更改,我意識到我需要在部署過程中使用維護頁面關閉網站。

回答

5

嘗試:

  1. cap deploy:update_code

  2. 你在手動描述了登錄電子服務器或通過cap shell

  3. cap deploy:symlink deploy:restart

更多信息請參見cap -e deploy:update_code deploy:symlink deploy:restart deploy:shell

我希望這會對你有所幫助。

+0

這應該這樣做,謝謝!在Capistrano的任務流程中是否有任何文檔(即「cap deploy」實際按什麼順序運行的子任務)? – jrdioko 2011-03-09 18:58:38