Forum: Ruby windows bat file help needed for rubygems

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Eric H. (Guest)
on 2006-12-26 01:26
(Received via mailing list)
How do I get a windows .bat file to return a proper exit code?

RubyGems build stubs that look something like this:

"c:\ruby\bin\ruby" -x "%~f0" %*
goto endofruby
#!/bin/ruby
abort 'boom'
__END__
:endofruby

But if I run this:

ruby -e "system 'stub.bat'; p $?"

I get the wrong exit code (0 instead of 1).

If I can get the right exit code then failure to build rake
extensions will fail installs properly in Rubygems.

--
Eric H. - removed_email_address@domain.invalid - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!
Wilson B. (Guest)
on 2006-12-26 01:40
(Received via mailing list)
On 12/25/06, Eric H. <removed_email_address@domain.invalid> wrote:
>
> But if I run this:
>
> ruby -e "system 'stub.bat'; p $?"
>
> I get the wrong exit code (0 instead of 1).
>
> If I can get the right exit code then failure to build rake
> extensions will fail installs properly in Rubygems.
>

What do you get when you put:
exit %ERRORLEVEL%
under the :endofruby label?

From my quick test, the ruby interpreter returns a proper code, and
the command shell sets the ERRORLEVEL variable correctly.
Eric H. (Guest)
on 2006-12-26 01:58
(Received via mailing list)
On Dec 25, 2006, at 15:39, Wilson B. wrote:
>> :endofruby
>
> What do you get when you put:
> exit %ERRORLEVEL%
> under the :endofruby label?
>
> From my quick test, the ruby interpreter returns a proper code, and
> the command shell sets the ERRORLEVEL variable correctly.

Your name will live forever in the rubygems ChangeLog.

--
Eric H. - removed_email_address@domain.invalid - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!
Eric H. (Guest)
on 2006-12-26 02:22
(Received via mailing list)
On Dec 25, 2006, at 15:57, Eric H. wrote:
>>> __END__
>>> :endofruby
>>
>> What do you get when you put:
>> exit %ERRORLEVEL%
>> under the :endofruby label?
>>
>> From my quick test, the ruby interpreter returns a proper code, and
>> the command shell sets the ERRORLEVEL variable correctly.
>
> Your name will live forever in the rubygems ChangeLog.

Hrm, it seems that gems doesn't generate .bat files, but instead
generates .cmd files.  I'll ask Curt about this.

--
Eric H. - removed_email_address@domain.invalid - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!
Wilson B. (Guest)
on 2006-12-26 02:26
(Received via mailing list)
On 12/25/06, Eric H. <removed_email_address@domain.invalid> wrote:
> >>> abort 'boom'
> > Your name will live forever in the rubygems ChangeLog.
>
> Hrm, it seems that gems doesn't generate .bat files, but instead
> generates .cmd files.  I'll ask Curt about this.
>

Should work the same in either. Since going with .cmd files discards
Windows 98 compatibility (rightly), there are some other tricks that
can be safely invoked. As a .CMD, 'EXIT' can take a /B argument that
will exit from the script, but not the command shell as a whole.
This topic is locked and can not be replied to.