Capistrano::Configuration.instance.load do namespace :multiproject do desc "[internal] Generate arteficial any_server role that enumerates all known servers" task :any_server_role do project_roles_sym = project_roles.map { |o| o.to_sym } servers = roles.values.map { |o| o.servers }.flatten.map { |o| o.to_s }.sort.uniq # ruby 1.8 hates having hash after expanding array, while 1.9 is totally cool with that # top.role(:any_server, *servers, { :no_release => true }) servers.each { |s| top.server s, :any_server, :no_release => true } end end on :start, 'multiproject:any_server_role', :except => (projects + stages + %w(?)) end