Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
273 lines (178 sloc) 8.08 KB
= RAKE -- Ruby Make
Supporting Rake version: 0.8.2
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 synthesize implicit tasks.
* Flexible FileLists that act like arrays but know about manipulating
file names and paths.
* A library of prepackaged tasks to make building rakefiles easier.
== Download
The latest version of rake can be found at
== Source Repository
Rake is currently hosted at github. The github web page is The public git clone URL is
* git://
== 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
=== Running the Rake Test Suite
If you wish to run the unit and functional tests that come with Rake:
* Install the 'session' gem in order to run the functional tests.
* CD into the top project directory of rake.
* Type one of the following:
rake # If you have a version of rake installed
ruby -Ilib bin/rake # If you do not have a version of rake installed.
== Online Resources
== Rake References
* Rake Documentation Home:
* Rake Project Page:
* Rake API Documents:
* Rake Source Code Repo:
* Rake Git Repo Clone URL: git://
== Presentations and Articles about Rake
* Jim Weirich's 2003 RubyConf presentation:
* Martin Fowler's article on Rake:
=== Road Map
* 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
* If you want to see the original announcement of rake, see
* If you want to see a glossary of terms, see
== 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 <tt>rake</tt> 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"
The command
$ rake
will invoke the +default+ task. As +default+ satisfies its
prerequisites, the +test+ task will run the unit tests for the
== 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.
* -- Bras, one of earliest
implementations of "make in a scripting language".
* -- Make in Python
* -- JAM, Java Automated Make
* -- The Ant project
* -- Make from the Perl
Power Tools implementation.
* -- The Perl Build System
* -- Rant, another Ruby make tool.
== Credits
[<b>Ryan Dlugosz</b>] For the initial conversation that sparked Rake.
[<b></b>] For the initial patch for rule support.
[<b>Tilman Sauerbeck <></b>] For the recursive rule patch.
== License
Rake is available under an MIT-style license.
:include: MIT-LICENSE
== Support
The Rake homepage is You can find the Rake
RubyForge page at
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
= Usage
Rake is invoked from the command line using:
% rake [<em>options</em> ...] [<em>VAR</em>=<em>VALUE</em>] [<em>targets</em> ...]
Options are:
Set the environment variable <em>name</em> to <em>value</em>
during the execution of the <b>rake</b> command. You can access
the value by using ENV['<em>name</em>'].
[<tt>--classic-namespace</tt> (-n)]
Import the Task, FileTask, and FileCreateTask into the top-level
scope to be compatible with older versions of Rake. Alternatively
you can include the line <code>require
'rake/classic_namespace'</code> in your Rakefile to get the
classic behavior.
[<tt>--describe</tt> _pattern_ (-D)]
Describe the tasks (matching optional PATTERN), then exit.
[<tt>--dry-run</tt> (-n)]
Do a dry run. Print the tasks invoked and executed, but do not
actually execute any of the actions.
[<tt>--execute</tt> _code_ (-e)]
Execute some Ruby code and exit.
[<tt>--execute-print</tt> _code_ (-p)]
Execute some Ruby code, print the result, and exit.
[<tt>--execute-continue</tt> _code_ (-p)]
Execute some Ruby code, then continue with normal task processing.
[<tt>--help</tt> (-H)]
Display some help text and exit.
[<tt>--libdir</tt> _directory_ (-I)]
Add _directory_ to the list of directories searched for require.
[<tt>--nosearch</tt> (-N)]
Do not search for a Rakefile in parent directories.
[<tt>--prereqs</tt> (-P)]
Display a list of all tasks and their immediate prerequisites.
[<tt>--quiet</tt> (-q)]
Do not echo commands from FileUtils.
[<tt>--rakefile</tt> _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.
[<tt>--rakelibdir</tt> _rakelibdir_ (-R)]
Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib')
[<tt>--require</tt> _name_ (-r)]
Require _name_ before executing the Rakefile.
Trace the rules resolution.
[<tt>--silent (-s)]
Like --quiet, but also suppresses the 'in directory' announcement.
[<tt>--tasks</tt> (-T)]
Display a list of the major tasks and their comments. Comments
are defined using the "desc" command.
[<tt>--trace</tt> (-t)]
Turn on invoke/execute tracing. Also enable full backtrace on errors.
[<tt>--usage</tt> (-h)]
Display a usage message and exit.
[<tt>--verbose</tt> (-v)]
Echo the Sys commands to standard output.
[<tt>--version</tt> (-V)]
Display the program version and exit.
In addition, any command line option of the form
<em>VAR</em>=<em>VALUE</em> will be added to the environment hash
<tt>ENV</tt> and may be tested in the Rakefile.
= Rakefile Format
See doc/rakefile.rdoc[]
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
Jump to Line
Something went wrong with that request. Please try again.