_____ __ / ___/___ / /_ __ _____ __ ______ / (_ // -_) __/ / // / _ | // / __/ \___/ \__/\__/ \_, /\___|_,_/_/ '-(+++++... /___/ ............ s++++++++. .(++++++++++++( -+++~~~~~ 'N++++++++++= B++++++++s '+++++++++++++++( DN=++++++< -NB+++++++++s Bz++++++++ +++++++++++++++++. 'NNN=++++++(-BNB+++++++++'BN========- =B=+++++++++sDBBBBs<. +NNNN=+++++( \____ ~BNh .+B+ / _ \/ _ \ = \ / ~Dz~. .~+zB=' \___/_//_/ / \ \__/ :leaves do # (Bagging action goes here.) end Rake lists these tasks in the expected fashion. $ rake --tasks rake bag_leaves[paper_or_plastic] # Rakes and bags the leaves rake leaves # Rakes the leaves Put the following in your _config/deploy.rb_. **Note that Cape statements must be executed within a `Cape` block.** require 'cape' Cape do # Create Capistrano recipes for all Rake tasks. mirror_rake_tasks end Now all your Rake tasks can be invoked as Capistrano recipes. Capistrano lists the recipes in the following fashion. $ cap --tasks cap deploy # Deploys your project. ... [other built-in Capistrano recipes] ... cap bag_leaves # Rakes and bags the leaves. cap leaves # Rakes the leaves. Some tasks were not listed, either because they have no description, or because they are only used internally by other tasks. To see all tasks, type `cap -vT'. Extended help may be available for these tasks. Type `cap -e taskname' to view it. Let’s use Capistrano to view the unabbreviated description of a Rake task recipe, including instructions for how to pass arguments to it. Note that Rake task parameters are automatically converted to environment variables. $ cap --explain bag_leaves ------------------------------------------------------------ cap bag_leaves ------------------------------------------------------------ Bags the leaves. You must set environment variable PAPER_OR_PLASTIC. Cape lets you filter the Rake tasks to be mirrored: Cape do # Create Capistrano recipes for the Rake task 'foo' or for the tasks in a # 'foo' namespace. mirror_rake_tasks :foo # Create Capistrano recipes only for the Rake task 'bar:baz' or for the # tasks in the 'bar:baz' namespace. mirror_rake_tasks 'bar:baz' end Cape plays friendly with the Capistrano DSL for organizing Rake tasks in Capistrano namespaces. # Use an argument with the Cape block, if you want to or need to. namespace :rake_tasks do Cape do |cape| cape.mirror_rake_tasks end end Cape lets you enumerate Rake tasks, optionally filtering them by task name or namespace. Cape do each_rake_task do |t| # Do something interesting with this hash: # * t[:name] -- the full name of the task # * t[:parameters] -- the names of task arguments # * t[:description] -- documentation on the task, including parameters end end Limitations ----------- For now, only Rake tasks that have descriptions can be mirrored or enumerated. Contributing ------------ Report defects and feature requests on [GitHub Issues](http://github.com/njonsson/cape/issues). Your patches are welcome, and you will receive attribution here for good stuff. License ------- Released under the [MIT License](http://github.com/njonsson/cape/blob/master/MIT-LICENSE.markdown).