Capistrano is a utility for managing remote servers and automating remote tasks. It is popularly used to deploy Rails applications (but can do oh, so much more!). Version 2.2.0 is now available (well, it’s released, anyway, you might need to wait for the file to propagate to the gem mirrors).
gem install capistrano
Version 2.2.0 sports the following changes:
FEATURE: Dynamic role definition. The role() method now accepts a block, which should return either a host name, a Capistrano::ServerDefinition object, an array of host names, or an array of Capistrano::ServerDefinition objects. This can be used to describe the servers in a role at runtime.
role :app do hosts = some_method_that_looks_up_the_current_hosts hosts[0,3] end
FEATURE: Alternative server-centric role definitions, using the server() method:
role :app, "server" role :web, "server" # the above is the same as this: server "server", :app, :web
FEATURE: Support for a :max_hosts option in tasks, that restricts the task so that it is only executed in ENHANCEMENT: Improved Git support! ENHANCEMENT: Password prompt support in the Mercurial SCM. ENHANCEMENT: Implement Bzr#next_revision so that pending changes can be reported correctly, and use checkout —lightweight instead of branch. ENHANCEMENT: Bring back the :p4sync_flags and :p4client_root variables for perforce SCM. Additionally, there are several minor bugs and typos that have been fixed. You can see the CHANGELOG for all the gory details. As ever, please report bugs via the Rails trac, at http://dev.rubyonrails.org. And if you aren’t yet subscribed to the Capistrano mailing list, it’s where all the cool cappists hang out.task :ping, :max_hosts => 100 do
# anything here will only run against 100 hosts at a time
end
# alternatively, you can pass :max_hosts to the run command itself for
# finer granularity
task :pong do
# this will run on ALL hosts at once
run "something"
# this will run on no more than 100 hosts at a time
run "something-else", :max_hosts => 100
end