Ruby on rails 如何在Capistrano运行迁移

Ruby on rails 如何在Capistrano运行迁移,ruby-on-rails,capistrano,Ruby On Rails,Capistrano,是否可以让Capistrano使用迁移更新当前部署的应用程序(这是自上次部署以来作为更改提交的全部内容),使用此代码更新部署的应用程序(不运行新的完全部署),然后只运行迁移?部署就是部署,部署就是部署 您要求部署而不部署(!?) IMHO,您的问题更多地与SCM(svn、git等)相关,而不是与capistrano相关。 您可能希望部署部分代码(一次迁移),但不是所有提交给trunk/master的代码。您需要做的是为部署分支/标记,并从该分支/标记进行部署 例如,如果我使用svn,我总是将以下

是否可以让Capistrano使用迁移更新当前部署的应用程序(这是自上次部署以来作为更改提交的全部内容),使用此代码更新部署的应用程序(不运行新的完全部署),然后只运行迁移?

部署就是部署,部署就是部署

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

IMHO,您的问题更多地与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\u my\u desired\u migration)
  • 部署该标记,包括cap deploy:migrate

每种工具都有它的用途,我们必须充分利用每种工具的功能。

为什么不运行一个正常的部署?无论如何,架构更改后都应该重新启动应用程序。请在终端上运行“cap-e deploy:upload”,以了解我为什么需要这样做的确切解释。。。问题是,从subversion(就我而言,我无法理解subversion)中提取命令是不起作用的。我从来没有使用过
cap deploy:upload
,因为我更想知道我到底部署了什么。我不明白为什么你不能
capdeploy:upload deploy:migrate FILES=db/migrate/foo.rb