class Rake::Application

def run(argv = ARGV)

call +top_level+ to run your top level tasks.
+init+ on your application. Then define any tasks. Finally,
If you wish to build a custom rake command, you should call

* Run the top level tasks (+top_level+).
* Define the tasks (+load_rakefile+).
* Initialize the command line options (+init+).

three steps:
Run the Rake application. The run method performs the following
def run(argv = ARGV)
  standard_exception_handling do
    init "rake", argv
    load_rakefile
    top_level
  end
end