Unsplash Photo: Miguel Ibáñez

Capistrano 3: Passing Parameters to Your Task

Michael Nikitochkin
The Incident Commander
1 min readJun 12, 2017

--

The new way of passing parameters in Capistrano v3 is to use the same solution as Rake (in some sort Capistrano 3 is totally based on Rake).

A little example, let us create a task to run any specific rake task with options:

namespace :task do
desc 'Execute the specific rake task'
task :invoke, :command do |task, args|
on roles(:app) do
execute :rake, args[:command]
end
end
end

and now we can run rake db:migrate on remote hosts:

$ cap staging "task:invoke[db:migrate]"
INFO [397d776e] Running rake db:migrate on 8.8.8.8
DEBUG [397d776e] Command: ( RAILS_ENV=staging rake db:migrate )
...

I used the quotes, because for zsh the brackets are used for some shell features.

Some more information with good examples of passing parameters to rake task can be found here.

Michael Nikitochkin is a Lead Software Engineer. Follow him on LinkedIn or GitHub.

If you enjoyed this story, we recommend reading our latest tech stories and trending tech stories.

--

--

Michael Nikitochkin
The Incident Commander

software engineer. like ruby, crystal and golang. play with containers and kubernetes via terraform.