Feature #1999: Improved Tempfile
http://redmine.ruby-lang.org/issues/show/1999

Author: Hongli Lai
Status: Open, Priority: Normal
Category: lib

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


----------------------------------------
http://redmine.ruby-lang.org