Feature #20497
closedTempfile.create_io
Description
I propose Tempfile.create_io.
It is similar to Tempfile.create but the actual file is unlinked before returning the method.
https://github.com/ruby/ruby/pull/10803
Purpose:
Sometimes, applications need a temporary file but it is not required to access via a pathname.
In this case, the created file can be unlinked just after temporary file creation.
This removes the obligation of removing the file from applications.
So, Tempfile.create_io is easier to use than Tempfile.create.
Example:
tmpio = Tempfile.create_io # => #<IO:fd 5>
tmpio.class # => IO
tmpio.path # => nil
tmpio.stat.mode.to_s(8) # => "100600"
tmpio.puts "foo"
tmpio.rewind
tmpio.read # => "foo\n"
tmpio.close
Portability:
This feature (unlink just after file creation) is supported on Unix for a long time.
Linux 3.11 has O_TMPFILE to create an unnamed file.
The current implementation uses it.
I heard that it is possible on Windows. (O_SHARE_DELETE?)
I'm not sure how to use it.