[Rake-devel] Question about system call and multiple arguments.

Luis Lavena luislavena at gmail.com
Sun Nov 2 18:27:23 EST 2008

On Sun, Nov 2, 2008 at 2:56 PM, James M. Lawrence
<quixoticsycophant at gmail.com> wrote:
> On Sat, Nov 1, 2008 at 11:42 AM, Luis Lavena <luislavena at gmail.com> wrote:
>> I consider this another bug, since the extension is not present or
>> required in other platforms, but looks like ruby on windows lookup for
>> executables is failing now.
>> Please disregard previous message, a patch for Ruby is underway.
> In our previous conversation, I had explained that a fully-qualified
> path as the first parameter to multi-argument system() is not
> interpolated,
> http://rubyforge.org/tracker/index.php?func=detail&aid=22303&group_id=167&atid=715

Yes Lawrence, I remember our talk and that's why I published a follow
up to this message:


> Shell interpolation and executable-spawning are two separate, distinct
> ideas which are unfortunately smooshed together in the one system()
> command via the single-argument and multi-argument forms respectively.
> As I argue in that link, I think the only permanent solution is
> LAUNCH_RUBY_ARGS for multi-argument system().  It would cover all
> possible ruby implementations, including jruby.
> In any case, a permanent solution is far off.  In the meantime I don't
> think Rake should be broken.  Which means a workaround:  jruby should
> use single-argument system() (shell interpolation will find
> jruby.bat), while all other implementations
> append EXEEXT, keeping multi-argument system().

So this approach will define RUBY (around line 900 in lib/rake.rb)
depending on the platforms, and append the full extension. That is

  RUBY = File.join(Config::CONFIG['bindir'],
  RUBY << Config::CONFIG['EXEEXT'] unless RUBY_PLATFORM =~ /java/
  RUBY.sub!(/.*\s.*/m, '"\&"')


Luis Lavena
Human beings, who are almost unique in having the ability to learn from
the experience of others, are also remarkable for their apparent
disinclination to do so.
Douglas Adams

More information about the Rake-devel mailing list