Project

General

Profile

Actions

Feature #1999

closed

Improved Tempfile

Added by hongli (Hongli Lai) over 12 years ago. Updated over 10 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
[ruby-core:25131]

Description

=begin
I've written an improved version of Tempfile. The changes are as follows:

  • Much better documentation.
  • A large unit test suite to prevent future regressions.
  • Fixes a bug in the finalizer: if one calls #unlink on a Tempfile, then recreates the same file outside Ruby, and then runs the garbage collector, then the Tempfile's finalizer will delete the newly created file even when it's not supposed to:

t = Tempfile.new('foo')
path = t.path
t.close
t.unlink
system("touch #{path}")
exit # Run finalizers
# => The file as referred to by 'path' doesn't exist anymore.

The source code can be found here:

http://github.com/FooBarWidget/better/blob/232a0a4f68dab7950c06390fddb940e7af1ff607/lib/better/tempfile.rb

It's compatible with both 1.8 and 1.9.

The tests are here:
http://github.com/FooBarWidget/better/blob/232a0a4f68dab7950c06390fddb940e7af1ff607/test/tempfile_test.rb
http://github.com/FooBarWidget/better/blob/232a0a4f68dab7950c06390fddb940e7af1ff607/test/tempfile_unlink_on_exit_example.rb
http://github.com/FooBarWidget/better/blob/232a0a4f68dab7950c06390fddb940e7af1ff607/test/tempfile_explicit_unlink_example.rb
http://github.com/FooBarWidget/better/blob/232a0a4f68dab7950c06390fddb940e7af1ff607/test/tempfile_explicit_close_and_unlink_example.rb
=end


Files

tempfile-creation-error.diff (883 Bytes) tempfile-creation-error.diff hongli (Hongli Lai), 08/29/2009 02:49 AM

Related issues

Related to Ruby master - Feature #2166: Add CreationErrorRejectedmame (Yusuke Endoh)10/01/2009Actions
Actions

Also available in: Atom PDF