Class: Tempfiles
Overview
Holds a set of related temporary file names. When it goes out of scope, the files are deleted.
files = Tempfiles.new('foo')
puts files['gif']
puts files['xml']
Instance Method Summary collapse
- #[](suffix) ⇒ Object
-
#initialize(basename = nil) ⇒ Tempfiles
constructor
A new instance of Tempfiles.
-
#unlink ⇒ Object
This method shouldn’t be needed, as files are supposed to get deleted when Tempfile instances are GC’ed.
Constructor Details
#initialize(basename = nil) ⇒ Tempfiles
Returns a new instance of Tempfiles.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/drx/tempfiles.rb', line 11 def initialize(basename=nil) if basename.nil? basename = $0.tr('^a-z', '_').tr('_', '') + 'xyzzy' end @refs = [] @paths = Hash.new do |h, suffix| tf = Tempfile.new([basename, '.' + suffix]) tf.close @refs << tf # We must keep a ref to this object or its finalizer will delete the temp file. h[suffix] = tf.path end if block_given? begin yield self ensure unlink end end end |
Instance Method Details
#[](suffix) ⇒ Object
33 34 35 |
# File 'lib/drx/tempfiles.rb', line 33 def [](suffix) @paths[suffix] end |
#unlink ⇒ Object
This method shouldn’t be needed, as files are supposed to get deleted when Tempfile instances are GC’ed. But it seems they aren’t always.
40 41 42 |
# File 'lib/drx/tempfiles.rb', line 40 def unlink @refs.each { |tf| tf.unlink } end |