Written by
Michael Nikitochkin
on
on
Capistrano 3: Passing Parameters to Your Task
Capistrano 3: Passing Parameters to Your Task
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.