I'm in the process of upgrading from Capistrano 2 to Capistrano 3. In Cap 2 I was using the following to take a command line argument as the branch name (otherwise default to master
)
set :branch, fetch(:branch, "master")
If I called cap deploy
it would deploy the master branch. But it also let me do something like this:
cap deploy -S branch=foo
Which would deploy the foo
branch.
Now, in Capistrano 3, if I try to run the above I get an error: invalid option: -S
.
What's the proper way to pass an argument via the command line now?
Rake tasks (which cap is using) are supporting arguments.
namespace :test do
desc "Test task"
task :test, :arg1 do |t, args|
arg1 = args[:arg1]
puts arg1
end
end
cap -T outputs:
cap yiic:test[arg1] # Test task
Example of invocation:
cap production yiic:test[test1]
Also, here is a helpful post
P.S.: you should use env vars for "global" settings. Like common values for multiple tasks.