从capistrano任务中调用多级capistrano任务

时间:2010-08-02 19:02:01

标签: ruby-on-rails deployment capistrano

我有一个capistrano任务,它整合了Rails项目的多个阶段的部署。

例如:

task :consolidated_task do
    build #creates a new release branch from master, 
          #sets a variable with the relese branch name

    staging
    deploy.migrations

    production
    deploy.migrations
end

这是从另一个上限任务调用多级任务的正确方法吗?

构建任务创建一个新的git分支并发布它。新分支的名称将保存为capistrano变量。然后,登台和生产阶段任务使用此变量来指定要部署的分支。

当此任务运行时,它失败并显示:

fatal: working tree '/Users/<my working directory>' already exists.
/usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.19/lib/capistrano/recipes/deploy/strategy/copy.rb:99:in `initialize': No such file or directory - /var/folders/3d/3dKYNUwQGOSLZFXsMF-uv++++TM/-Tmp-/20100802182750/REVISION (Errno::ENOENT)

我正在从我的本地计算机上推送源代码作为git存储库,并且部署计算机无法相互通信。

1 个答案:

答案 0 :(得分:7)

任务名称,如

deploy:production:whatever

在Cap中曝光

deploy.production.whatever

您还有top个命名空间可以转到命名空间的顶部,因为路径是相对的。

因此,无论您的任务目前在哪个命名空间,您都可以像以下一样:

top.deploy.production.whatever