From: Jarmo Pertman Date: 2010-11-28T06:10:18+09:00 Subject: Kernel.exec not behaving consistently on Windows? Hello! It seems that Kernel.exec doesn't work consistently on Windows when compared with Kernel.system or IO.popen. Consider the following examples: This works: exec "ping", "localhost" This doesn't work: exec "ping.exe", "localhost" Errno::ENOENT: No such file or directory - ping.exe This works: exec "c:\\windows\\system32\\ping.exe", "localhost" This doesn't work: exec "c:\\windows\\system32\\ping", "localhost" Errno::ENOENT: No such file or directory - c:\windows\system32\ping When invoking exec always with only one parameter then all the examples above work correctly - e.g. with allowing Ruby to do the shell expansion which isn't changing for the examples above anything. Also, Windows shell doesn't do any expansion either since there isn't such a thing. Why is it like that? The problem is that Bundler uses "Kernel.exec(*ARGV)" which makes `bundle exec` to fail here and there (for example autotest within Rails3). What possible solution is there to fix that issue once and for all? I've opened a bug in Bundler's repo, which is now closed due no good solutions or just a matter of opinions that this bug is not Bundler's. Maybe this is a bug of Ruby instead and if it's not then should it be fixed within Bundler or within every other library. I'd bet for Bundler since that is one of the central places which every other library might use, even if the bug is Ruby's. And if that all is expected behavior then what should be the solution. By the way, all examples above seem to be working fine on 1.9 MRI, but fail on 1.8 MRI. Jarmo Pertman ----- IT does really matter - http://www.itreallymatters.net