我如何在Capistrano中运行迁移

时间:2010-12-14 23:03:00

标签: ruby-on-rails capistrano

是否有可能让Capistrano通过迁移更新当前部署的应用程序(这是自上次部署以来所提交的所有内容),仅使用此代码更新已部署的应用程序(无需运行新的完整部署)和只是运行迁移?

1 个答案:

答案 0 :(得分:0)

部署就是它的部署。

您要求部署而不部署(!?)

恕我直言,你的问题与SCM(svn,git等等)有关,而不是与capistrano有关。 您可能希望部署部分代码(一次迁移),但不是部署到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)
  • 部署该标记,包括cap deploy:migrate

每个工具都有其目的,我们必须利用每个工具的力量。