[Rake-devel] Rake 0.8.7 broken on Windows

Hartin, Brian Brian.Hartin at pearson.com
Wed May 26 18:17:46 EDT 2010


I have created three one-line ruby scripts to demonstrate the issue with 'call'.  Please note the directory locations:


	puts "Working directory is #{Dir.pwd}"


	Kernel.system('c:\ruby\bin\ruby.exe c:\temp\print_working_directory.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.





> -----Original Message-----
> From: rake-devel-bounces at rubyforge.org 
> [mailto:rake-devel-bounces at rubyforge.org] On Behalf Of Luis Lavena
> Sent: Wednesday, May 26, 2010 4:15 PM
> To: Rake Development and Discussion
> Subject: Re: [Rake-devel] Rake 0.8.7 broken on Windows
> On Wed, May 26, 2010 at 5:42 PM, Hartin, Brian 
> <Brian.Hartin at pearson.com> wrote:
> > Hi all,
> >
> > In Rake::AltSystem#repair_command, you're now appending 
> "call " to the
> > beginning of the command.  This has the effect of losing the working
> > directory.  For example, running 'rake test' from the root 
> directory of
> > a project will fail to find its unit tests.  It also causes 
> a lot of gem
> > installation failures, as 'gem install' often seems to run 
> rake from the
> > installed gem directory to complete the installation, and 
> fails to find
> > necessary files.
> >
> Can you give a concrete example? GitHub repo that can be 
> cloned and see this?
> I've been using Rake 0.8.7 with 1.8.6, 1.8.7 without issues. 1.9.1 has
> fixed the system invocations and works to for gem installation and
> everything.
> Please provide us more information so we can help determine the real
> root of the issue.
> Call preserves the parent process path:
> C:\Users\Luis>cd && cd Desktop && cd && call cmd.exe /c cd && 
> cd .. && cd
> C:\Users\Luis
> C:\Users\Luis\Desktop
> C:\Users\Luis\Desktop
> C:\Users\Luis
> That is true for Ruby too.
> -- 
> Luis Lavena
> AREA 17
> -
> 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
> _______________________________________________
> Rake-devel mailing list
> Rake-devel at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rake-devel

More information about the Rake-devel mailing list