= RAKE -- Ruby Make This package contains Rake, a simple ruby build program with capabilities similar to make. Rake has the following features: * Rakefiles (rake's version of Makefiles) are completely defined in standard Ruby syntax. No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?) * Users can specify tasks with prerequisites. * Rake supports rule patterns to sythesize implicit tasks. * Rake is lightweight. It can be distributed with other projects as a single file. Projects that depend upon rake do not require that rake be installed on target systems. == Download The latest version of rake can be found at * http://rubyforge.org/project/showfiles.php?group_id=50 Online Resources can be found at ... * Online Rake Documentation: http://rake.rubyforge.org * Rake Project Page: http://rubyforge.org/projects/rake * Rake Project Wiki: http://rake.rubyforge.org/wiki/wiki.pl == Installation === Normal Installation You can install rake with the following command. % ruby install.rb from its distribution directory. === GEM Installation Download and install rake with the following. gem install --remote rake == Roadmap * If you want to see how to invoke rake to build your projects, read on. * If you want to see the format of a Rakefile, see doc/rakefile.rdoc[http://rake.rubyforge.org/files/doc/rakefile_rdoc.html]. * If you want to see the original announcement of rake, see doc/rational.rdoc[http://rake.rubyforge.org/files/doc/rational_rdoc.html]. * If you want to see a glossary of terms, see doc/glossary.rdoc[http://rake.rubyforge.org/files/doc/glossary_rdoc.html]. == Simple Example Once installed, you can run rake as follows ... % rake [options ...] [VAR=VALUE ...] [tasks...] Type "rake --help" for an up-to-date option summary. Invoking rake without any options or targets causes rake to look for a rakefile and invoke the default task in that rakefile. For example, given a simple rakefile like this ... task :default => [:test] task :test do ruby "test/unittest.rb" end The command $ rake will invoke the +default+ task. As +default+ satisfies its prerequisites, the +test+ task will run the unit tests for the package. == Other Make Reinvisionings ... Rake is a late entry in the make replacement field. Here are links to other projects with similar (and not so similar) goals. * http://www.a-a-p.org -- Make in Python * http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make * http://ant.apache.org -- The Ant project * http://www.perl.com/language/ppt/src/make/index.html -- Make from the Perl Power Tools implementation. == Credits [Ryan Dlugosz] For the initial conversation that sparked Rake. [nobu.nokada@softhome.net] For the initial patch for rule support. == License Rake is available under an MIT-style license. :include: MIT-LICENSE == Support The Rake homepage is http://rake.rubyforge.org. You can find the Rake RubyForge page at http://rubyforge.org/projects/rake. Feel free to submit commits or feature requests. If you send a patch, remember to update the corresponding unit tests. If fact, I prefer new feature to be submitted in the form of new unit tests. For other information, feel free to ask on the ruby-talk mailing list (which is mirrored to comp.lang.ruby) or contact mailto:jim@weirichhouse.org. ---- = Usage Rake is invoked from the command line using: % rake [options ...] [VAR=VALUE] [targets ...] Options are: [name=value] Set the environment variable name to value during the execution of the rake command. You can access the value by using ENV['name']. [--dry-run (-n)] Do a dry run. Print the tasks invoked and executed, but do not actually execute any of the actions. [--help (-H)] Display some help text and exit. [--libdir _directory_ (-I)] Add _directory_ to the list of directories searched for require. [--nosearch (-N)] Do not search for a Rakefile in parent directories. [--prereqs (-P)] Display a list of all tasks and their immediate prerequisites. [--quiet (-q)] Do not echo commands from FileUtils. [--rakefile _filename_ (-f)] Use _filename_ as the name of the rakefile. The default rakefile names are +rakefile+ and +Rakefile+ (with +rakefile+ taking precedence). If the rakefile is not found in the current directory, +rake+ will search parent directories for a match. The directory where the Rakefile is found will become the current directory for the actions executed in the Rakefile. [--require _name_ (-r)] Require _name_ before executing the Rakefile. [--tasks (-T)] Display a list of the major tasks and their comments. Comments are defined using the "desc" command. [--trace (-t)] Turn on invoke/execute tracing. Also enable full backtrace on errors. [--usage (-h)] Display a usage message and exit. [--verbose (-v)] Echo the Sys commands to standard output. [--version (-V)] Display the program version and exit. In addition, any command line option of the form VAR=VALUE will be added to the environment hash ENV and may be tested in the Rakefile. --- = Rakefile Format See doc/rakefile.rdoc[http://rake.rubyforge.org/files/doc/rakefile_rdoc.html] for details on the Rakefile format. --- = Other stuff Author:: Jim Weirich Requires:: Ruby 1.8.0 or later License:: Copyright 2003, 2004 by Jim Weirich. Released under an MIT-style license. See the LICENSE file included in the distribution. == Warranty This software is provided "as is" and without any express or implied warranties, including, without limitation, the implied warranties of merchantibility and fitness for a particular purpose.