class Dir

Public Class Methods

mktmpdir(prefix_suffix=nil, tmpdir=nil) { |path| ... } click to toggle source
# File lib/mcollective/monkey_patches.rb, line 72
def self.mktmpdir(prefix_suffix=nil, tmpdir=nil)
  case prefix_suffix
  when nil
    prefix = "d"
    suffix = ""
  when String
    prefix = prefix_suffix
    suffix = ""
  when Array
    prefix = prefix_suffix[0]
    suffix = prefix_suffix[1]
  else
    raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
  end
  tmpdir ||= Dir.tmpdir
  t = Time.now.strftime("%Y%m%d")
  n = nil
  begin
    path = "#{tmpdir}/#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
    path << "-#{n}" if n
    path << suffix
    Dir.mkdir(path, 0700)
  rescue Errno::EEXIST
    n ||= 0
    n += 1
    retry
  end

  if block_given?
    begin
      yield path
    ensure
      FileUtils.remove_entry_secure path
    end
  else
    path
  end
end
tmpdir() click to toggle source
# File lib/mcollective/monkey_patches.rb, line 111
def self.tmpdir
  tmp = '.'
  for dir in [ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'], '/tmp']
    if dir and stat = File.stat(dir) and stat.directory? and stat.writable?
      tmp = dir
      break
    end rescue nil
  end
  File.expand_path(tmp)
end