How do I prevent Rails from trying to load the application for every Rake task?

Here’s what the default Rails 3 Rakefile looks like:

require File.expand_path('../config/application', __FILE__)

This does the following:

  • Loads my Rails application. This takes around 15 seconds. Most of
    this time is spent on the Bundler.require; Rails itself loads within
    a second or two.
  • Loads any Rake tasks from my gems.
  • Loads any Rake tasks from my lib/tasks directory.

How do I write a Rakefile that only does steps 2 and 3, but not step 1
(unless I go the usual route and specify the :environment task)?

What would be even better is if I could explicitly require what’s
needed for each gem’s Rake tasks, so that if I don’t want to use them,
I don’t have to load them. (This was the behavior in Rails 2.)

In short, I don’t want “rake foo” to try to load the Rails
environment, unless “foo” actually depends on the environment being