Sha256: adc1447b1991e0d425d92ac2d009d0082224557dffca9c84076958701572d8df

Contents?: true

Size: 758 Bytes

Versions: 3

Compression:

Stored size: 758 Bytes

Contents

module Roo
  module Tempdir
    def finalize_tempdirs(object_id)
      if @tempdirs && (dirs_to_remove = @tempdirs[object_id])
        @tempdirs[object_id] = nil
        dirs_to_remove.each do |dir|
          ::FileUtils.remove_entry(dir)
        end
      end
    end

    def make_tempdir(object, prefix, root)
      root ||= ENV['ROO_TMP']
      # folder is cleaned up in .finalize_tempdirs
      ::Dir.mktmpdir("#{Roo::TEMP_PREFIX}#{prefix}", root).tap do |tmpdir|
        @tempdirs ||= {}
        if @tempdirs[object.object_id]
          @tempdirs[object.object_id] << tmpdir
        else
          @tempdirs[object.object_id] = [tmpdir]
          ObjectSpace.define_finalizer(object, method(:finalize_tempdirs))
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
roo-2.6.0 lib/roo/tempdir.rb
roo-2.5.1 lib/roo/tempdir.rb
roo-2.5.0 lib/roo/tempdir.rb