Capistrano 3 pulling command line arguments

Brad Dwyer picture Brad Dwyer · Jan 9, 2014 · Viewed 8.8k times · Source

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?

Answer

Brad Dwyer picture Brad Dwyer · Jan 9, 2014

What I ended up doing was setting an ENV variable.

So now I can call

cap production deploy branch=mybranch

And it will deploy mybranch. If I run a simple cap production deploy it will deploy the default branch (master if you don't set one, but I've changed mine below to default to demonstrate)

This is the code I put in my deploy.rb file:

set :branch, "default"
if ENV['branch']
        set :branch, ENV['branch']
end