Daniel Berger
3/21/2007 3:35:00 PM
On Mar 21, 6:57 am, Robert Klemme <shortcut...@googlemail.com> 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 "./<tmpfilename>" 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