Sha256: 1e382f226f329b69e699ed93f2dc23ed0a3dc7a907993e43ad8f009863273dcf

Contents?: true

Size: 1.57 KB

Versions: 17

Compression:

Stored size: 1.57 KB

Contents

class Dir
  begin
    Backports.make_block_optional self, :each, :test_on => Dir.new('.')
  rescue # We may not be able to read the current directory, issue #58
    Backports.make_block_optional self, :each, :force => true if RUBY_VERSION < '1.8.7'
  end

  class << self
    begin
      Backports.make_block_optional self, :foreach, :test_on => Dir, :arg => '.'
    rescue # We may not be able to read the current directory, issue #58
      Backports.make_block_optional self, :foreach, :force => true if RUBY_VERSION < '1.8.7'
    end

    def mktmpdir(prefix_suffix=nil, tmpdir=nil)
      raise NoMethodError, "undefined method `mktmpdir' for Dir:Class; you must require 'tmpdir'" unless respond_to? :tmpdir

      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}-#{$$}-#{Kernel.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 unless method_defined? :mktmpdir

  end
end

Version data entries

17 entries across 17 versions & 2 rubygems

Version Path
backports-3.0.3 lib/backports/1.8.7/dir.rb
backports-3.0.2 lib/backports/1.8.7/dir.rb
backports-3.0.1 lib/backports/1.8.7/dir.rb
backports-3.0.0 lib/backports/1.8.7/dir.rb
backports-2.8.2 lib/backports/1.8.7/dir.rb
backports-2.8.1 lib/backports/1.8.7/dir.rb
backports-2.8.0 lib/backports/1.8.7/dir.rb
backports-2.7.1 lib/backports/1.8.7/dir.rb
backports-2.7.0 lib/backports/1.8.7/dir.rb
backports-2.6.7 lib/backports/1.8.7/dir.rb
backports-2.6.6 lib/backports/1.8.7/dir.rb
backports-2.6.5 lib/backports/1.8.7/dir.rb
fragrant-0.0.5 vendor/bundle/ruby/1.9.1/gems/backports-2.6.4/lib/backports/1.8.7/dir.rb
backports-2.6.4 lib/backports/1.8.7/dir.rb
backports-2.6.3 lib/backports/1.8.7/dir.rb
backports-2.6.2 lib/backports/1.8.7/dir.rb
backports-2.6.1 lib/backports/1.8.7/dir.rb