Notes:
= Rake 0.7.0 Released
These changes for Rake have been brewing for a long time. Here they
are, I hope you enjoy them.
== Changes
=== New Features
* Name space support for task names (see below).
* Prerequisites can be executed in parallel (see below).
* Added safe_ln support for openAFS (via Ludvig Omholt).
* RDoc defaults to internal (in-process) invocation. The old behavior
is still available by setting the +external+ flag to true.
* Rakefiles are now loaded with the expanded path to prevent
accidental polution from the Ruby load path.
* Task objects my now be used in prerequisite lists directly.
* Task objects (in addition to task names) may now be included in the
prerequisite list of a task.
* Internals cleanup and refactoring.
=== Bug Fixes
* Compatibility fixes for Ruby 1.8.4 FileUtils changes.
=== Namespaces
Tasks can now be nested inside their own namespaces. Tasks within one
namespace will not accidently interfer with tasks named in a different
namespace.
For example:
namespace "main" do
task :build do
# Build the main program
end
end
namespace "samples" do
task :build do
# Build the sample programs
end
end
task :build_all => ["main:build", "samples:build"]
Even though both tasks are named :build, they are separate tasks in
their own namespaces. The :build_all task (defined in the toplevel
namespace) references both build tasks in its prerequisites.
You may invoke each of the individual build tasks with the following
commands:
rake main:build
rake samples:build
Or invoke both via the :build_all command:
rake build_all
Namespaces may be nested arbitrarily. Since the name of file tasks
correspond to the name of a file in the external file system,
FileTasks are not affected by the namespaces.
See the Rakefile format documentation (in the Rake API documents) for
more information.
=== Parallel Tasks
Sometimes you have several tasks that can be executed in parallel. By
specifying these tasks as prerequisites to a +multitask+ task.
In the following example the tasks copy_src, copy_doc and copy_bin
will all execute in parallel in their own thread.
multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do
puts "All Copies Complete"
end
== What is Rake
Rake is a build tool similar to the make program in many ways. But
instead of cryptic make recipes, Rake uses standard Ruby code to
declare tasks and dependencies. You have the full power of a modern
scripting language built right into your build tool.
== Availability
The easiest way to get and install rake is via RubyGems ...
gem install rake (you may need root/admin privileges)
Otherwise, you can get it from the more traditional places:
Home Page:: http://rake.rubyforge.org/
Download:: http://rubyforge.org/project/showfiles.php?group_id=50
== Thanks
As usual, it was input from users that drove a alot of these changes.
The following people either contributed patches, made suggestions or
made otherwise helpful comments. Thanks to ...
* Doug Young (inspriation for the parallel task)
* David Heinemeier Hansson (for --trace message enhancement and for
pushing for namespace support).
* Ludvig Omholt (for the openAFS fix)
-- Jim Weirich
Changes:
= Rake Changelog
== Pre-Version 0.7.0
* Added Rake.original_dir to return the original starting directory of
the rake application.
* Added safe_ln support for openAFS (from Ludvig Omholt).
* Added --trace reminder on short exception messages (David Heinemeier
Hansson suggestion).
* Added multitask declaration that executes prerequisites in
parallel. (Doug Young providied an initial implementation).
* Fixed missing_const hack to be compatible with Rails. (Jamis Buck
supplied test case).
* Made the RDoc task default to internal (in-process) RDoc formatting.
The old behavior is still available by setting the +external+ flag
to true.
* Rakefiles are now loaded with the expanded path to prevent
accidental polution from the Ruby load path.
* The +namespace+ command now returns a NameSpace object that can be
used to lookup tasks defined in that namespace. This allows for
better anonymous namespace behavior.
* Task objects my now be used in prerequisite lists directly.
== Version 0.6.1
* Rebuilt 0.6.0 gem without signing.
== Version 0.6.0
* Fixed file creation bug in the unit tests (caused infinite loop on
windows).
* Fixed bug where session based functional tests were run under
windows.
* Fixed bug in directory tasks so that updating a directory will not
retrigger file tasks depending on the directory (see
FileCreationTask and EarlyTime).
* Added egrep to FileList
* ruby command now runs same ruby version as rake.
* Added investigation to task object. (suggested by Martin Fowler)
* Added ruby_opts to the test task to allow arbitrary ruby options to
be passed to the test script. (Greg Fast)
* Fixed the test loader to ignore options. (Greg Fast)
* Moved Task, FileTask, FileCreationTask and RakeApp into the Rake
module namespace. Old style namespace behavior can be invoked via
the --classic-namespace option. (requested by Kelly Felkins).
* GemTask is now sensitive to the gem platform (Masao Mutoh).
* A non-existing file prerequisite will no longer cause an exception
(Philipp Neubeck).
* Multiple prerequisites on Rake rules now allowed (initial patch
supplied by Stuart Jansen).
== Version 0.5.4
* Added double quotes to the test runner.
* Added .svn to default ignore list.
* Updated FileList#include to support nested arrays and filelists.
== Version 0.5.3
* Added support for importing Rakefile and other dependencies.
* Fixed bug so that now rules can chain off of existing tasks as well
as existing files.
* Fixed verbose flag bug in the testing task. Shortened some failure
messages.
* Make FileUtils methods private at the top level module to avoid
accidental method leaking into other objects.
* Added test loader option to test task. "testrb" is no longer the
default test loader. It is now eating syntax errors that should
halt the unit tests.
* Revamped FileList so that it works more like and array (addressed
flatten bug). Added many tests around file list.
* Added +ext+ method to both String and FileList.
== Version 0.5.0
* Fixed documentation that was lacking the Rake module name (Tilman
Sauerbeck).
* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck).
* Recursive rules are now supported (Tilman Sauerbeck).
* Added warning option for the Test Task (requested by Eric Hodel).
* The jamis rdoc template is only used if it exists.
* Added fix for Ruby 1.8.2 test/unit and rails problem.
* Added contributed rake man file (Jani Monoses).
* Added Brian Candler's fix for problems in --trace and --dry-run
mode.
== Version 0.4.15
* Fixed a bug that prevented the TESTOPTS flag from working with the
revised for 1.8.2 test task.
* Updated the docs on --trace to indicate that it also enables a full
backtrace on errors.
== Version 0.4.14
* Modified the TestTask to workaround the Ruby 1.8.2 change in
autoexecuting unit tests.
== Version 0.4.13
* Fixed the dry-run flag so it is operating again.
* Multiple arguments to sh and ruby commands will not be interpreted
by the shell (patch provided by Jonathan Paisley).
== Version 0.4.12
* Added --silent (-s) to suppress the (in directory) rake message.
== Version 0.4.11
* Changed the "don't know how to rake" message (finally)
* Changes references to a literal "Rakefile" to reference the global
variable $rakefile (which contains the actual name of the rakefile).
== Version 0.4.10
* Added block support to the "sh" command, allowing users to take
special actions on the result of the system call. E.g.
sh "shell_command" do |ok, res|
puts "Program returned #{res.exitstatus}" if ! ok
end
== Version 0.4.9
* Switched to Jamis Buck's RDoc template.
* Removed autorequire from Rake's gem spec. This prevents the Rake
libraries from loading while using rails.
== Version 0.4.8
* Added support for .rb versions of Rakefile.
* Removed \\\n's from test task.
* Fixed Ruby 1.9 compatibility issue with FileList.
== Version 0.4.7
* Fixed problem in FileList that caused Ruby 1.9 to go into infinite
recursion. Since to_a was removed from Object, it does not need to
added back into the list of methods to rewrite in FileList. (Thanks
to Kent Sibilev for pointing this out).
== Version 0.4.6
* Removed test version of ln in FileUtils that prevented safe_ln from
using ln.
== Version 0.4.5
* Upgraded comments in TestTask.
* FileList to_s and inspect now automatically resolve pending changes.
* FileList#exclude properly returns the FileList.
== Version 0.4.4
* Fixed initialization problem with @comment.
* Now using multi -r technique in TestTask. Switch Rakefile back to
using the built-in test task macros because the rake runtime is no
longer needed.
* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task
macros.
* Allow a +test_files+ attribute in test tasks. This allows more
flexibility in specifying test files.
== Version 0.4.3
* Fixed Comment leakage.
== Version 0.4.2
* Added safe_ln that falls back to a copy if a file link is not supported.
* Package builder now uses safe_ln.
== Version 0.4.1
* Task comments are now additive, combined with "/".
* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0)
== Version 0.4.0
* FileList now uses deferred loading. The file system is not searched
until the first call that needs the file names.
* VAR=VALUE options are now accepted on the command line and are
treated like environment variables. The values may be tested in a
Rakefile by referencing ENV['VAR'].
* File.mtime is now used (instead of File.new().mtime).
== Version 0.3.2.x
* Removed some hidden dependencies on rubygems. Tests now will test
gems only if they are installed.
* Removed Sys from some example files. I believe that is that last
reference to Sys outside of the contrib area.
* Updated all copyright notices to include 2004.
== Version 0.3.2
* GEM Installation now works with the application stub.
== Version 0.3.1
* FileLists now automatically ignore CVS, .bak, !
* GEM Installation now works.
== Version 0.3.0
Promoted 0.2.10.
== Version 0.2.10
General
* Added title to Rake's rdocs
* Contrib packages are no longer included in the documentation.
RDoc Issues
* Removed default for the '--main' option
* Fixed rendering of the rdoc options
* Fixed clean/clobber confusion with rerdoc
* 'title' attribute added
Package Task Library Issues
* Version (or explicit :noversion) is required.
* +package_file+ attribute is now writable
FileList Issues
* Dropped bang version of exclude. Now using ant-like include/exclude semantics.
* Enabled the "yield self" idiom in FileList#initialize.
== Version 0.2.9
This version contains numerous changes as the RubyConf.new(2003)
presentation was being prepared. The changes include:
* The monolithic rubyapp task library is in the process of being
dropped in favor of lighter weight task libraries.
== Version 0.2.7
* Added "desc" for task descriptions.
* -T will now display tasks with descriptions.
* -P will display tasks and prerequisites.
* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys
is still supported in the contrib area.
== Version 0.2.6
* Moved to RubyForge
== Version 0.2.5
* Switched to standard ruby app builder.
* Added no_match option to file matcher.
== Version 0.2.4
* Fixed indir, which neglected to actually change directories.
== Version 0.2.3
* Added rake module for a help target
* Added 'for_files' to Sys
* Added a $rakefile constant
* Added test for selecting proper rule with multiple targets.
|