From: Daniel Berger Date: 2007-03-22T00:40:06+09:00 Subject: Re: Cygwin + TempFile + Dir.chdir = failure On Mar 21, 6:57 am, Robert Klemme wrote: > On 21.03.2007 11:48, vulpes wrote: > > > I'm running ruby 1.8.5-3 for Cygwin under Win XP Pro SP 2. Here's some > > code: > > > require 'tempfile' > > > Dir.chdir("./aDir") do > > Tempfile.open("johndoe", ".") do |f| > > # Can be even empty > > end > > end > > > With this code, the temporary file in ./aDir will not be removed. Is > > this a bug, a Cygwin/Windows "feature", or what? How to get around > > this thing? > > If you do this it will be removed (regardless whether you use chdir or > not) - at least that's the behavior I observe on my system: > > Tempfile.open("johndoe", "/tmp") do |f| > # Can be even empty > end > > Basically the chdir isn't needed anyway. It appears you hit a bug in > the stdlib: it seems to try to delete "./" but fails > because the file does not exist (remember that "." points to a different > directory then). > > I just had a quick check of the Tempfile code and it appears that no > attempts are made to get an absolute path. There is not a single > occurrence of expand_path in tempfile.rb. > > The obvious workaround is to use an absolute path (see above). Looks like a bug to me. Please file it on the RubyForge tracker (and the patch, too, if you've got one). Thanks, Dan