Bugs item #6764, was opened at 2006-11-18 10:09
You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=6764&group_id=426

Category: Files / Dirs / IO
Group: None
>Status: Closed
>Resolution: Rejected
Priority: 3
Submitted By: David Welton (davidw)
Assigned to: Nobody (None)
Summary: tempfile.rb should let you preserve a file

Initial Comment:
Hello, this is not a bug but a feature request.  Perhaps these should be addressed to some other place?  In any case:

There are times when it would be nice to not automatically delete Tempfiles - when debugging for instance, but also in cases when an error occurs and you want to be able to examine what was going on.  What would be fantastic is a 'preserve' method that you can call that prevents the file from being 'reaped'.  I wasn't able to implement a patch to do this, unfortunately.

----------------------------------------------------------------------

>Comment By: Ryan Davis (zenspider)
Date: 2007-05-29 18:44

Message:
Alternatively, if you're debugging you can do something like the following:

file_klass = $DEBUG ? File : Tempfile

file_klass.open "blah.txt" do |f|
  # ...
end

or, always use Tempfile.open but move the file if you want to keep it:

Tempfile.open("blah.txt") do |f|
  # ...
  File.rename f.path, "keep.txt" if $DEBUG
end


----------------------------------------------------------------------

Comment By: Shyouhei Urabe (shyouhei)
Date: 2007-05-29 16:03

Message:
Tempfiles won't be unlinked until:

(1) you pass a non-false value to the argument to Tempfile#close
(2) or the GC collects the instance

so if you want not delete a Tempfile, just hold the instance.

f = Tempfile.new("foo")
...
f.close(false) # preserve
...
f = nil # and GC will delete the file

----------------------------------------------------------------------

You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=6764&group_id=426