[Rake-devel] Rake 0.8.7 broken on Windows

Luis Lavena luislavena at gmail.com
Wed May 26 18:42:47 EDT 2010

On Wed, May 26, 2010 at 7:17 PM, Hartin, Brian <Brian.Hartin at pearson.com> wrote:
> Luis,
> I have created three one-line ruby scripts to demonstrate the issue with 'call'.  Please note the directory locations:
> c:\temp\print_working_directory.rb:
>        puts "Working directory is #{Dir.pwd}"
> c:\temp\invoke_ruby.rb
>        Kernel.system('c:\ruby\bin\ruby.exe c:\temp\print_working_directory.rb')
> c:\temp\invoke_ruby_using_call.rb
>        Kernel.system('call c:\ruby\bin\ruby.exe c:\temp\print_working_directory.rb')
> Next, I opened a command window and executed the following commands:
>        c:\>cd c:\temp
>        c:\temp>ruby invoke_ruby.rb (prints "Working directory is C:/temp")
>        c:\temp>ruby invoke_ruby_using_call.rb (prints "Working directory is C:/Documents and Settings/hartbr")
> When I run 'rake test' from my project directory (C:\workspaces\project), I see the same thing.  To demonstrate, here's what you need to do:
> 1) gem install rake 0.7.3
> 2) Modify rake_test_loader.rb to print the working directory.
> 3) Run 'rake:test' from the root directory of any Rails project.  You should see that the forked ruby process runs the tests from that directory.
> 4) Uninstall rake 0.7.3 (Just for clarity's sake)
> 5) Install rake 0.8.7
> 6) Repeat step 2
> 7) Repeat step 3, and I think it will fail to find the unit tests.
> I traced things from the Rails rake tasks all the way to alt_system.rb, and this doesn't seem to be a Rails issue.  Rails correctly assembles the file list, consisting of relative paths like "test/unit/foo_test.rb".  The directory issue causes Rake 0.8.7 to fail with a "No such file to load" error.
> I did a fresh install of Ruby today, to make sure my Ruby installation wasn't part of the problem.

The only one reporting me "No such file to load" is Ruby 1.9.2 that do
not add "." to the $LOAD_PATH

Invoking "rake test" or "rake spec" in any project I've used takes the
directory where Rakefile is found and executed.

That had worked and still works for me.

There was several back and forth on alt_system issues because Ruby
1.8.x is flawed to handle system calls. "call" was required to handle
*args calls to system.

Luis Lavena
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry

More information about the Rake-devel mailing list