I'm using Capistrano to handle my deployment, and I've got two different roles in my setup - :web and :processing. They both have the usual :deploy tasks, but the :restart task needs to be different for the two types of server.
So my first attempt was something like this:
task :restart, :roles => :web do
run "... web related restart stuff ..."
end
task :restart, :roles => :processing do
run "... processing related restart stuff ..."
end
Which doesn't work, because the second :restart (for :processing role) replaces the first :restart (for the :web role), and the :web :restart never happens.
I had a quick look around to see if I could write conditional code depending on which role (or roles) a server might be in when the task is run but there's next to no documentation out there for that kind of thing. Any ideas?