Method: Bio::Command.mktmpdir

Defined in:
lib/bio/command.rb

.mktmpdir(prefix = 'd', tmpdir = nil, &block) ⇒ Object

Backport of Dir.mktmpdir in Ruby 1.9.

Same as Dir.mktmpdir(prefix_suffix) in Ruby 1.9 except that prefix must be a String, nil, or omitted.


Arguments:

  • (optional) prefix: String



367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
# File 'lib/bio/command.rb', line 367

def mktmpdir(prefix = 'd', tmpdir = nil, &block)
  prefix = prefix.to_str
  begin
    Dir.mktmpdir(prefix, tmpdir, &block)
  rescue NoMethodError
    suffix = ''
    # backported from Ruby 1.9.0.
    # ***** Below is excerpted from Ruby 1.9.0's lib/tmpdir.rb ****
    # ***** Be careful about copyright. ****
    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
        remove_entry_secure path
      end
    else
      path
    end
    # ***** Above is excerpted from Ruby 1.9.0's lib/tmpdir.rb ****
  end
end