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).
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).
Point is that I encountered this while using RubyZip. If I’m trying to
edit a zip file in another directory with RubyZip, it is unable to
delete the temp file it creates. And there I have tried using absolute
paths, it doesn’t work.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.