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__)
MyApp::Application.load_tasks

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
present.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs