= Reap User Friendly Project Assitant for Ruby == What's This? Reap is a user friendly project assistant for Ruby developers built on top of Rake. By organizing your project in a semi-formal manner (the same as setup.rb), Reap makes it easy to do the following tasks: * Generate RDocs. * Run unit tests. * Create Ruby Gem packages. * Create standard .tgz, tbz (bzip2) and/or .zip packages. * Publish documents to Rubyforge or other web sites. * Announce a release to Ruby-talk or other mailing list. * Prepare files for distribution (i.e. chmod, tag, etc.). * Upload packages (coming soon!). If you have special needs that Reap doesn't accomodate, new task are farily easy to create. And we are always happy to hear suggestions. == Installation === Gem Install Install the ruby gem as you would any other: gem install reap Reap requires Nano Methods. === Manual Install To install manually follow the usual setup.eb steps: 1. Download the compressed package. 2. Unpack it. 3. Change into the unpacked directory. 4. run ./setup.rb You should be good to go. == Usage === Using a Reap Task Reap makes it pretty easy to use it's built-in tasks. Not only will it grab common data from a ProjectInfo YAML file if available, but it defines convenience methods to make writing Rakefiles easier. For instance, to create a "package" target all you generally need in your Rakefile is: require 'reap/tasks' include ReapTask package_task :package The reaon this can be so simple, is b/c Reap extrapolates the information it needs from a comon ProjectInfo file. You will of course need to create this file in you projects main directory. A template is provided and a command line tool to copy it to your current directory. Simply type: > reap template Then edit the ProjectInfo file. The fields are fairly self explanitiory. Apart from Reap such a file is nice to have on it's own merits too. === Building a Reap Task Building a Reap task differs from building a Rake task by two important factors. First there is only one target per task (this may change) Second, task blocks are yeilded _prior_ to the #init routine being exectuted. So your #init routine should expect data to already be present in the tasks attribute and take that into account (usually that means using ++||=++) Here's an, oh so simple, example: class MyOhSoSimpleTask < Reap::Task # This creates the convenience method register 'my_oh_so_simple' default_desc 'this is a custom reap task' attr_accessor :message def init @message ||= master['default'] || 'None Found!' end # run the target task def run puts @message end end The corresponding settings in the ProjectInfo file (master) will then be: default: Default text, if any. And to use it in your Rake file: ReapTask::my_oh_so_simple_task :mytarget == Status Reap is currently Usable Beta. Most of the tasks work very well. Refinements are still common though, and a few important tasks are still being planned. == Legal Reap Copyright(c)2004-2005 Thomas Sawyer Ruby License