Needing help using Rake from within a Ruby program

Hello all,

I'm trying to invoke rake from within one of my Unit Test files to setup a
test database before running tests and I'm having some trouble doing so. I
try the following code in a file that is located in the same directory as my
Rakefile:

rake = Rake::Application.new
rake['foo:bar:load'].invoke

and I get the following:

RuntimeError: Don't know how to build task 'foo:bar:load'

However, if I run rake from the command line in this same directory passing
it the foo:bar:load task it works fine. Any suggestions?

Thanks! -- BTR

Did you require the rakefile in you code? rake does so automatically.

Thanks,

Gordon

···

On Jan 17, 2008 10:14 PM, Bryan Richardson <btricha@gmail.com> wrote:

Hello all,

I'm trying to invoke rake from within one of my Unit Test files to setup a
test database before running tests and I'm having some trouble doing so. I
try the following code in a file that is located in the same directory as my
Rakefile:

rake = Rake::Application.new
rake['foo:bar:load'].invoke

and I get the following:

RuntimeError: Don't know how to build task 'foo:bar:load'

However, if I run rake from the command line in this same directory passing
it the foo:bar:load task it works fine. Any suggestions?

Thanks! -- BTR

Did you require the rakefile in you code? rake does so automatically.

Thanks,

Gordon

Wow, that was very terse. Even for me. What I mean is that the rake
command will require your rakefile automatically. But if you want to
use a rake task from ruby, you will have to explicitly require the
rakefile.

Thanks,

Gordon

Gordon,

How do I specify the Rakefile to use?

Thanks! -- BTR

···

On Jan 17, 2008 9:36 PM, Gordon Thiesfeld <gthiesfeld@gmail.com> wrote:

>
> Did you require the rakefile in you code? rake does so automatically.
>
> Thanks,
>
> Gordon
>

Wow, that was very terse. Even for me. What I mean is that the rake
command will require your rakefile automatically. But if you want to
use a rake task from ruby, you will have to explicitly require the
rakefile.

Thanks,

Gordon

I was a little off. I don't think you can use require, but you can use load.

require 'rubygems'
require 'rake'
load 'path/to/Rakefile'

rake = Rake::Application.new
rake['spec'].invoke

···

On Jan 17, 2008 10:53 PM, Bryan Richardson <btricha@gmail.com> wrote:

Gordon,

How do I specify the Rakefile to use?

Thanks! -- BTR