12.0.0(dev)

Compatibility Changes:

11.2.2 / 2016-06-12

Bug fixes:

11.2.1 / 2016-06-12

Bug fixes:

11.2.0 / 2016-06-11

Bug fixes:

Enhancements:

11.1.2 / 2016-03-28

Bug fixes:

11.1.1 / 2016-03-14

Bug fixes:

11.1.0 / 2016-03-11

Compatibility Changes:

11.0.1 / 2016-03-09

Bug fixes:

11.0.0 / 2016-03-09

Bug fixes:

Enhancements:

Compatibility Changes:

10.5.0 / 2016-01-13

Enhancements:

10.4.2 / 2014-12-02

Bug fixes:

10.4.1 / 2014-12-01

Bug fixes:

10.4.0 / 2014-11-22

Enhancements:

Bug fixes:

10.3.2 / 2014-05-15

Bug fixes:

10.3.1 / 2014-04-17

Bug fixes:

10.3 / 2014-04-15

Enhancements:

Bug fixes:

10.2.2 / 2014-03-27

Bug fixes:

10.2.1 / 2014-03-25

Bug fixes:

10.2.0 / 2014-03-24

Enhancements:

Bug fixes:

10.1.1 and earlier

Additions to the old CHANGES file were not made consistently so some versions are missing from this file. These changes are usually described in the individual release notes files.

10.1.0

Changes

New Features
Bug Fixes

Bug fixes include:

Thanks

As usual, it was input from users that drove a lot of these changes. The following people contributed patches, made suggestions or made otherwise helpful comments. Thanks to …

– Jim Weirich

10.0.3

"Jim, when will Rake reach version 1.0?"

Over the past several years I've been asked that question at conferences, panels and over twitter. Due to historical reasons (or maybe just plain laziness) Rake has (incorrectly) been treating the second digit of the version as the major release number. So in my head Rake was already at version 9.

Well, it's time to fix things. This next version of Rake drops old, crufty, backwards compatibility hacks such as top level constants, DSL methods defined in Object and numerous other features that are just no longer desired. It's also time to drop the leading zero from the version number as well and call this new version of rake what it really is: Version 10.

So, welcome to Rake 10.0!

Rake 10 is actually feature identical to the latest version of Rake 9 (that would be the version spelled 0.9.3), except that Rake 10 drops all the sundry deprecated features that have accumulated over the years.

If your Rakefile is up to date and current with all the new features of Rake 10, you are ready to go. If your Rakefile still uses a few deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same feature set. Just be aware that future features will be in Rake 10 family line.

Changes

As mentioned above, there are no new features in Rake 10. However, there are a number of features missing:

There is one small behavioral change:

Changes (from 0.9.3, 0.9.4, 0.9.5)

Since Rake 10 includes the changes from the last version of Rake 9, we'll repeat the changes for versions 0.9.3 through 0.9.5 here.

New Features (in 0.9.3)
Bug Fixes (in 0.9.3)
Bug Fixes (in 0.9.4)
Bug Fixes (in 0.9.5)

Thanks

As usual, it was input from users that drove a lot of these changes. The following people contributed patches, made suggestions or made otherwise helpful comments. Thanks to …

Also, many thanks to Eric Hodel for assisting with getting this release out the door.

– Jim Weirich

10.0.2

Changes

Bug Fixes

Thanks

As usual, it was input from users that drove a lot of these changes. The following people contributed patches, made suggestions or made otherwise helpful comments. Thanks to …

Also, many thanks to Eric Hodel for assisting with getting this release out the door.

– Jim Weirich

10.0.1

Changes

Bug Fixes

Thanks

As usual, it was input from users that drove a lot of these changes. The following people contributed patches, made suggestions or made otherwise helpful comments. Thanks to …

Also, many thanks to Eric Hodel for assisting with getting this release out the door.

– Jim Weirich

10.0.0

"Jim, when will Rake reach version 1.0?"

Over the past several years I've been asked that question at conferences, panels and over twitter. Due to historical reasons (or maybe just plain laziness) Rake has (incorrectly) been treating the second digit of the version as the major release number. So in my head Rake was already at version 9.

Well, it's time to fix things. This next version of Rake drops old, crufty, backwards compatibility hacks such as top level constants, DSL methods defined in Object and numerous other features that are just no longer desired. It's also time to drop the leading zero from the version number as well and call this new version of rake what it really is: Version 10.

So, welcome to Rake 10.0!

Rake 10 is actually feature identical to the latest version of Rake 9 (that would be the version spelled 0.9.3), except that Rake 10 drops all the sundry deprecated features that have accumulated over the years.

If your Rakefile is up to date and current with all the new features of Rake 10, you are ready to go. If your Rakefile still uses a few deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same feature set. Just be aware that future features will be in Rake 10 family line.

Changes in 10.0

As mentioned above, there are no new features in Rake 10. However, there are a number of features missing:

There is one small behavioral change:

Changes (from 0.9.3)

Since Rake 10 includes the changes from the last version of Rake 9, we'll repeat the changes for version 0.9.3 here.

New Features
Bug Fixes

Thanks

As usual, it was input from users that drove a lot of these changes. The following people contributed patches, made suggestions or made otherwise helpful comments. Thanks to …

Also, many thanks to Eric Hodel for assisting with getting this release out the door.

– Jim Weirich

0.9.6

Rake version 0.9.6 contains a number of fixes mainly for merging Rake into the Ruby source tree and fixing tests.

Changes

Bug Fixes (0.9.6)

Changes for better integration with the Ruby source tree:

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 …

Also, many thanks to Eric Hodel for assisting with getting this release out the door.

– Jim Weirich

0.9.5

Rake version 0.9.5 contains a number of bug fixes.

Changes

Bug Fixes (0.9.5)

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 …

Also, many thanks to Eric Hodel for assisting with getting this release out the door.

– Jim Weirich

0.9.4

Rake version 0.9.4 contains a number of bug fixes.

Changes

Bug Fixes (0.9.4)

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 …

Also, many thanks to Eric Hodel for assisting with getting this release out the door.

– Jim Weirich

0.9.3

Rake version 0.9.3 contains some new, backwards compatible features and a number of bug fixes.

Changes

New Features
Bug Fixes

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 …

Also, many thanks to Eric Hodel for assisting with getting this release out the door.

– Jim Weirich

Rake 0.9.2.2

Rake version 0.9.2.2 is mainly bug fixes.

Changes

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 …

Also, bit thanks to Eric Hodel for assisting with getting this release out the door (where “assisting” includes, but is not by any means limited to, “pushing” me to get it done).

– Jim Weirich

0.9.2

Rake version 0.9.2 has a few small fixes. See below for details.

Changes

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 …

Also, bit thanks to Eric Hodel for assisting with getting this release out the door (where “assisting” includes, but is not by any means limited to, “pushing” me to get it done).

– Jim Weirich

0.9.1

Rake version 0.9.1 has a number of bug fixes and enhancments (see below for more details). Additionally, the internals have be slightly restructured and improved.

Changes

Rake 0.9.1 adds back the global DSL methods, but with deprecation messages. This allows Rake 0.9.1 to be used with older rakefiles with warning messages.

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 …

Also, bit thanks to Eric Hodel for assisting with getting this release out the door (where “assisting” includes, but is not by any means limited to, “pushing” me to get it done).

– Jim Weirich

0.9.0

Rake version 0.9.0 has a number of bug fixes and enhancments (see below for more details). Additionally, the internals have be slightly restructured and improved.

Changes

New Features / Enhancements / Bug Fixes in Version 0.9.0

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 …

Also, bit thanks to Eric Hodel for assisting with getting this release out the door (where “assisting” includes, but is not by any means limited to, “pushing” me to get it done).

– Jim Weirich

0.8.7

Rake version 0.8.5 introduced greatly improved support for executing commands on Windows. The “sh” command now has the same semantics on Windows that it has on Unix based platforms.

Rake version 0.8.6 includes minor fixes the the RDoc generation. Rake version 0.8.7 includes a minor fix for JRuby running on windows.

Changes

New Features / Enhancements in Version 0.8.5
Bug Fixes in Version 0.8.5

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 …

– Jim Weirich

0.8.6

Rake version 0.8.5 introduced greatly improved support for executing commands on Windows. The “sh” command now has the same semantics on Windows that it has on Unix based platforms.

Rake version 0.8.5 includes minor fixes the the RDoc generation.

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 …

– Jim Weirich

0.8.5

Rake version 0.8.5 is a new release of Rake with greatly improved support for executing commands on Windows. The “sh” command now has the same semantics on Windows that it has on Unix based platforms.

Changes

New Features / Enhancements in Version 0.8.5
Bug Fixes in Version 0.8.5

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 …

– Jim Weirich

0.8.4

Rake version 0.8.4 is a bug-fix release of rake.

NOTE: The version of Rake that comes with Ruby 1.9 has diverged

slightly from the core Rake code base.  Rake 0.8.4 will work
with Ruby 1.9, but is not a strict upgrade for the Rake that
comes with Ruby 1.9.  A (near) future release of Rake will unify
those two codebases.

Letter Writing Campaign

Thanks to Aaron Patterson (@tenderlove) and Eric Hodel (@drbrain) for their encouraging support in organizing a letter writing campaign to lobby for the “Warning Free” release of rake 0.8.4. A special callout goes to Jonathan D. Lord, Sr (Dr. Wingnut) whose postcard was the first to actually reach me. (see tenderlovemaking.com/2009/02/26/we-need-a-new-version-of-rake/ for details)

Changes

New Features / Enhancements in Version 0.8.4
Bug Fixes in Version 0.8.4
Infrastructure Improvements in Version 0.8.4

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 …

– Jim Weirich

0.8.3

Rake version 0.8.3 is a bug-fix release of rake.

Changes

Bug Fixes in Version 0.8.3

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 …

– Jim Weirich

0.8.2

Rake version 0.8.2 is a new release of rake that includes a number of new features and numerous bug fixes.

Changes

New Features in Version 0.8.2
Bug Fixes in Version 0.8.2

Other changes in Version 0.8.2

Task Argument Examples

Prior to version 0.8.0, rake was only able to handle command line arguments of the form NAME=VALUE that were passed into Rake via the ENV hash. Many folks had asked for some kind of simple command line arguments, perhaps using “–” to separate regular task names from argument values on the command line. The problem is that there was no easy way to associate positional arguments on the command line with different tasks. Suppose both tasks :a and :b expect a command line argument: does the first value go with :a? What if :b is run first? Should it then get the first command line argument.

Rake 0.8.0 solves this problem by explicitly passing values directly to the tasks that need them. For example, if I had a release task that required a version number, I could say:

rake release[0.8.2]

And the string “0.8.2” will be passed to the :release task. Multiple arguments can be passed by separating them with a comma, for example:

rake name[john,doe]

Just a few words of caution. The rake task name and its arguments need to be a single command line argument to rake. This generally means no spaces. If spaces are needed, then the entire rake + argument string should be quoted. Something like this:

rake "name[billy bob, smith]"

(Quoting rules vary between operating systems and shells, so make sure you consult the proper docs for your OS/shell).

Tasks that Expect Parameters

Parameters are only given to tasks that are setup to expect them. In order to handle named parameters, the task declaration syntax for tasks has been extended slightly.

For example, a task that needs a first name and last name might be declared as:

task :name, :first_name, :last_name

The first argument is still the name of the task (:name in this case). The next to argumements are the names of the parameters expected by :name (:first_name and :last_name in the example).

To access the values of the paramters, the block defining the task behaviour can now accept a second parameter:

task :name, :first_name, :last_name do |t, args|
  puts "First name is #{args.first_name}"
  puts "Last  name is #{args.last_name}"
end

The first argument of the block “t” is always bound to the current task object. The second argument “args” is an open-struct like object that allows access to the task arguments. Extra command line arguments to a task are ignored. Missing command line arguments are given the nil value.

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 …

– Jim Weirich

0.8.0/0.8.1

Rake version 0.8.0 is a new release of rake that includes serveral new features.

Changes

New Features in Version 0.8.0

Version 0.8.1 is a minor update that includes additional Ruby 1.9 compatibility fixes.

Task Argument Examples

Prior to version 0.8.0, rake was only able to handle command line arguments of the form NAME=VALUE that were passed into Rake via the ENV hash. Many folks had asked for some kind of simple command line arguments, perhaps using “–” to separate regular task names from argument values on the command line. The problem is that there was no easy way to associate positional arguments on the command line with different tasks. Suppose both tasks :a and :b expect a command line argument: does the first value go with :a? What if :b is run first? Should it then get the first command line argument.

Rake 0.8.0 solves this problem by explicitly passing values directly to the tasks that need them. For example, if I had a release task that required a version number, I could say:

rake release[0.8.0]

And the string “0.8.0” will be passed to the :release task. Multiple arguments can be passed by separating them with a comma, for example:

rake name[john,doe]

Just a few words of caution. The rake task name and its arguments need to be a single command line argument to rake. This generally means no spaces. If spaces are needed, then the entire rake + argument string should be quoted. Something like this:

rake "name[billy bob, smith]"

(Quoting rules vary between operating systems and shells, so make sure you consult the proper docs for your OS/shell).

Tasks that Expect Parameters

Parameters are only given to tasks that are setup to expect them. In order to handle named parameters, the task declaration syntax for tasks has been extended slightly.

For example, a task that needs a first name and last name might be declared as:

task :name, :first_name, :last_name

The first argument is still the name of the task (:name in this case). The next to argumements are the names of the parameters expected by :name (:first_name and :last_name in the example).

To access the values of the paramters, the block defining the task behaviour can now accept a second parameter:

task :name, :first_name, :last_name do |t, args|
  puts "First name is #{args.first_name}"
  puts "Last  name is #{args.last_name}"
end

The first argument of the block “t” is always bound to the current task object. The second argument “args” is an open-struct like object that allows access to the task arguments. Extra command line arguments to a task are ignored. Missing command line arguments are given the nil value.

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 …

– Jim Weirich

0.7.3

Rake version 0.7.3 is a minor release that includes some refactoring to better support custom Rake applications.

Changes

New Features in Version 0.7.3

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 …

– Jim Weirich

0.7.2

Version 0.7.2 supplies a bug fix and a few minor enhancements. In particular, the new version fixes an incompatibility with the soon to be released Ruby 1.8.6. We strongly recommend upgrading to Rake 0.7.2 in order to be compatible with the new version of Ruby.

Changes

Bug Fixes in 0.7.2

There are quite a number of bug fixes in the new 0.7.2 version of Rake:

New Features in 0.7.2

The following new features are available in Rake version 0.7.2:

Internal Rake Improvements

The following changes will are mainly internal improvements and refactorings and have little effect on the end user. But they may be of interest to the general public.

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 …

– Jim Weirich

0.7.1

Version 0.7.1 supplies a bug fix and a few minor enhancements.

Changes

Bug Fixes in 0.7.1
New Features in 0.7.1

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 …

– Jim Weirich

0.7.0

These changes for Rake have been brewing for a long time. Here they are, I hope you enjoy them.

Changes

New Features
Bug Fixes
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

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 …

– Jim Weirich

0.6.1

0.6.0

Its time for some long requested enhancements and lots of bug fixes … And a whole new web page.

New Web Page

The primary documentation for rake has moved from the RubyForge based wiki to its own Hieraki based web site. Constant spam on the wiki made it a difficult to keep clean. The new site will be easier to update and organize.

Check out the new documentation at: docs.rubyrake.org

We will be adding new documentation to the site as time goes on.

In addition to the new docs page, make sure you check out Martin Fowlers article on rake at martinfowler.com/articles/rake.html

Changes

New Features
Some Incompatibilities
Bug Fixes

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 …

– Jim Weirich

0.5.4

Time for some minor bug fixes and small enhancements

Changes

Here are the changes for version 0.5.4 …

Thanks

As usual, it was input from users that drove a alot of these changes. Thanks to …

– Jim Weirich

0.5.3

Although it has only been two weeks since the last release, we have enough updates to the Rake program to make it time for another release.

Changes

Here are the changes for version 0.5.3 …

Thanks

As usual, it was input from users that drove a alot of these changes. Thanks to …

– Jim Weirich

0.5.0

It has been a long time in coming, but we finally have a new version of Rake available.

Changes

Thanks

Lots of people provided input to this release. Thanks to Tilman Sauerbeck for numerous patches, documentation fixes and suggestions. And for also pushing me to get this release out. Also, thanks to Brian Candler for the finding and fixing –trace/dry-run fix. That was an obscure bug. Also to Eric Hodel for some good suggestions.

– Jim Weirich

0.4.15

Changes

Version 0.4.15 is a bug fix update for the Ruby 1.8.2 compatibility changes. This release includes:

Mini-Roadmap

I will continue to issue Rake updates in the 0.4.xx series as new Ruby-1.8.2 issues become manifest. Once the codebase stabilizes, I will release a 0.5.0 version incorporating all the changes. If you are not using Ruby-1.8.2 and wish to avoid version churn, I recommend staying with a release prior to Rake-0.4.14.

0.4.14

Version 0.4.14 is a compatibility fix to allow Rake's test task to work under Ruby 1.8.2. A change in the Test::Unit autorun feature prevented Rake from running any tests. This release fixes the problem.

Rake 0.4.14 is the recommended release for anyone using Ruby 1.8.2.

0.4.13

0.4.12

0.4.11

0.4.10

0.4.9

0.4.8

0.4.7

0.4.6

0.4.5

0.4.4

0.4.3

0.4.2

0.4.1

0.4.0

0.3.2.x

0.3.2

0.3.1

0.3.0

Promoted 0.2.10.

0.2.10

General

RDoc Issues

Package Task Library Issues

FileList Issues

0.2.9

This version contains numerous changes as the RubyConf.new(2003) presentation was being prepared. The changes include:

0.2.7

0.2.6

0.2.5

0.2.4

0.2.3