Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Rake bug on Windows

Reply
Thread Tools

Rake bug on Windows

 
 
S. Robert James
Guest
Posts: n/a
 
      03-22-2007
I can't find out where to file this:

Rake returns 0 exit status on Windows, even after failure.

>rake -V

c:0:Warning: require_gem is obsolete. Use gem instead.
rake, version 0.7.2

>ruby -v

ruby 1.8.5 (2006-08-25) [i386-mswin32]

>true && echo "Success!"

"Success!"

>false && echo "Success!"


>rake notthere && echo "Success!"

c:0:Warning: require_gem is obsolete. Use gem instead.
(in C:/medwiz/delanor/development)
rake aborted!
Don't know how to build task 'notthere'

(See full trace by running task with --trace)
"Success!"

 
Reply With Quote
 
 
 
 
Phrogz
Guest
Posts: n/a
 
      03-22-2007
On Mar 22, 3:38 pm, "S. Robert James" <(E-Mail Removed)> wrote:
> Rake returns 0 exit status on Windows, even after failure.


Not really. It appears that the problem is with the rake.bat batch
file that is used on Windows. Pared down, it looks something like
this:

"%~d0%~p0ruby" -x "%~f0" %*
goto endofruby
#!/bin/ruby

require 'rubygems'
require 'rake'
load 'rake'

__END__
:endofruby

The problem is that the batch file doesn't seem to properly pass along
the exit code in a way that causes Windows to do the right thing if
you perform a goto in the batch file. Here's a simple test case:

C:\>type tmp1.bat
@echo off
ruby -e "puts 'failing...'; exit(1)"

C:\>tmp1.bat && echo "success"
failing...

C:\>type tmp2.bat
@echo off
ruby -e "puts 'failing...'; exit(1)"
goto alldone
:alldone
echo The error level is %ERRORLEVEL%

C:\>tmp2.bat && echo "success"
failing...
The error level is 1
"success"

I hoped maybe I could fix this by really truly having the batch file
return the right error code, but no such luck:
C:\>exit /?
Quits the CMD.EXE program (command interpreter) or the current
batch script.

EXIT [/B] [exitCode]

/B specifies to exit the current batch script instead of
CMD.EXE. If executed from outside a batch script, it
will quit CMD.EXE

exitCode specifies a numeric number. if /B is specified, sets
ERRORLEVEL that number. If quitting CMD.EXE, sets the
process
exit code with that number.

C:\>type tmp3.bat
@echo off
ruby -e "puts 'failing...'; exit(1)"
goto alldone
:alldone
echo The error level is %ERRORLEVEL%
EXIT /B %ERRORLEVEL%

C:\>tmp3.bat && echo "success"
failing...
The error level is 1
"success"

If this is important, you could modify the rake.bat file on Windows
(in c:\ruby\bin) to have it not use the trick ruby -x option, and
instead just use -e instead. Something like:

C:\>type \ruby\bin\rake.bat
@"%~d0%~p0ruby" -e "require 'rubygems'; require 'rake'; load 'rake'"
%*

C:\>rake && echo "success"
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb,
Rakefile.rb)
c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.2/lib/rake.rb:1849:in
`load_rakefile'
(See full trace by running task with --trace)

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
multiple rake build files? large rake files thufir Ruby 3 04-12-2008 07:28 AM
rake published rdoc version and arity of Rake::Task#execute - wrongnumber of arguments (0 for 1) James Mead Ruby 0 01-15-2008 05:42 PM
Rake TestTask running its block anytime rake is invoked Adam Anderson Ruby 1 09-19-2007 08:40 AM
Rake and rake aborted! Rake aborted! undefined method `gem' for main:Object peppermonkey Ruby 1 02-10-2007 04:43 AM
Rake 0.7.0 breaks "rake engine_migrate"? Joe Van Dyk Ruby 2 01-31-2006 12:11 AM



Advertisments