Module: Roo::Tempdir
- Included in:
- Excelx, OpenOffice
- Defined in:
- lib/roo/tempdir.rb
Instance Method Summary collapse
Instance Method Details
#finalize_tempdirs(object_id) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 |
# File 'lib/roo/tempdir.rb', line 3 def finalize_tempdirs(object_id) if @tempdirs && (dirs_to_remove = @tempdirs[object_id]) @tempdirs.delete(object_id) dirs_to_remove.each do |dir| # Pass force=true to avoid an exception (and thus warnings in Ruby 3.1) if dir has # already been removed. This can occur when the finalizer is called both in a forked # child process and in the parent. ::FileUtils.remove_entry(dir, true) end end end |
#make_tempdir(object, prefix, root) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/roo/tempdir.rb', line 15 def make_tempdir(object, prefix, root) root ||= ENV["ROO_TMP"] # NOTE: This folder is cleaned up by finalize_tempdirs. ::Dir.mktmpdir("#{Roo::TEMP_PREFIX}#{prefix}", root).tap do |tmpdir| @tempdirs ||= Hash.new { |h, k| h[k] = [] } @tempdirs[object.object_id] << tmpdir end end |