Capistrano 3拉命令行参数

Bra*_*yer 14 git rake capistrano ruby-on-rails

我正在从Capistrano 2升级到Capistrano 3.在Cap 2中我使用以下命令行参数作为分支名称(否则默认为master)

set :branch, fetch(:branch, "master")
Run Code Online (Sandbox Code Playgroud)

如果我打电话cap deploy,它将部署主分支.但它也让我这样做:

cap deploy -S branch=foo
Run Code Online (Sandbox Code Playgroud)

哪个部署foo分支.

现在,在Capistrano 3中,如果我尝试运行上面的操作,我会收到一个错误:invalid option: -S.

现在通过命令行传递参数的正确方法是什么?

Bra*_*yer 39

我最终做的是设置一个ENV变量.

所以现在我可以打电话了

cap production deploy branch=mybranch
Run Code Online (Sandbox Code Playgroud)

它将部署mybranch.如果我运行一个简单的cap production deploy它将部署默认分支(master如果你没有设置一个,但我已经改变我的下面default来演示)

这是我放入deploy.rb文件的代码:

set :branch, "default"
if ENV['branch']
        set :branch, ENV['branch']
end
Run Code Online (Sandbox Code Playgroud)

  • 为了使它干,`set:branch,ENV ['branch'] || "default'` (15认同)

sen*_*enz 10

Rake任务(上限正在使用)是支持参数.

namespace :test do
  desc "Test task"
  task :test, :arg1 do |t, args|
    arg1 = args[:arg1]
    puts arg1
  end
end
Run Code Online (Sandbox Code Playgroud)

上限-T输出:

cap yiic:test [arg1] #Test任务

调用示例:

上限生产:测试[test1]

此外,这是一个有用的帖子

PS:你应该使用env vars进行"全局"设置.像多个任务的常见值一样.