2010-12-14 97 views
1

是否有可能讓Capistrano通過遷移來更新當前部署的應用程序(這是所有自上次部署以來已作爲更改提交的),只需使用此代碼更新已部署的應用程序(無需運行新的完整部署),只需運行遷移?如何在Capistrano運行遷移

+0

爲什麼不只是運行正常的部署?無論如何,模式更改後,應該始終重新啓動應用程序。 – 2010-12-15 00:28:01

+0

在終端運行'cap -e deploy:upload'以獲取我爲什麼需要這樣做的確切解釋......問題在於命令無法通過從顛覆中拉出來工作(對於我來說,我無法理解) – concept47 2010-12-15 00:35:06

+0

我從來沒有使用'cap deploy:upload',因爲我更願意知道我已經部署了什麼。雖然我不明白你爲什麼不能'cap deploy:upload deploy:migrate FILES = db/migrate/foo.rb'。 – 2010-12-15 01:43:40

回答

0

部署就是這樣一個部署。

你問,無需部署(!?)

恕我直言,以部署,你的問題是不是更Capistrano的相關SCM(SVN,GIT中,等...)。 你可能想要部署你的代碼(一次遷移),但不是所有提交給trunk/master的代碼。你必須做的是分支/標記部署,並從該分支/標籤進行部署。

例如,如果我使用SVN,我總是將這些行添加到我的deploy.rb:

set(:tag) { Capistrano::CLI.ui.ask("Tag to deploy: ") } 
set(:repository) { "#{repository_root}/tags/#{tag}" } 

這樣我可以部署一個特定的標籤,我的SVN有明確的規定我的生產代碼。

在你的情況下,該程序是:

  • 分支你最後的生產版本
  • 適用於該分支的任何更改(您所需的遷移)
  • 標記它(例如,PROD-with_my_desired_migration )
  • 部署標籤,包括帽部署:遷移

每個工具都有它的目的和我們必須利用他們每個人的力量。