Creating a Capistrano task that performs different tasks based on role

Michael picture Michael · Apr 16, 2009 · Viewed 14.4k times · Source

I'm looking for a way to call a single Capistrano task to perform different things to different roles. Is Capistrano able to do this, or do I have write a specific task for each role?

Answer

Sarah Mei picture Sarah Mei · Apr 16, 2009

The standard way to do this in Capistrano:

task :whatever, :roles => [:x, :y, :z] do
  x_tasks
  y_tasks
  z_tasks
end

task :x_tasks, :roles => :x do
  #...
end

task :y_tasks, :roles => :y do
  #...
end

task :z_tasks, :roles => :z do
  #...
end

So yes, you do need to write separate tasks, but you can call them from a parent task and they will filter appropriately.