Sha256: 72e89d8b54fce078bffdc12d91a5d514cca689cd4b4db9ea9a3b4b5e4134c382

Contents?: true

Size: 1.72 KB

Versions: 2

Compression:

Stored size: 1.72 KB

Contents

require 'tmpdir'

module DRbQS
  module Temporary
    @root = nil
    @pid = nil
    @subdir = nil
    @filename = nil

    # Return root of temporary directory.
    def self.root
      if @pid != Process.pid
        @pid = Process.pid
        @root = File.join(Dir.tmpdir, sprintf("drbqs_%s_%d_%d", ENV['USER'], @pid, rand(10000)))
        FileUtils.mkdir_p(@root, :mode => 0700)
      end
      @root
    end

    def self.set_sub_directory(dir)
      @filename = nil
      @subdir = File.join(self.root, dir)
    end

    def self.subdirectory
      @subdir && File.exist?(@subdir) ? @subdir : nil
    end

    # Return FileName object to generate names of temporary files on DRbQS nodes.
    def self.filename
      unless @filename
        if @subdir
          @filename = FileName.new(File.join(@subdir, sprintf("temp_%d", rand(10000))))
        else
          @filename = FileName.new(File.join(self.root, sprintf("temp_%d", rand(10000))))
        end
      end
      @filename
    end

    # Create new temporary directory and return the path of directory.
    def self.directory
      filename.create(:add => :always, :directory => :self)
    end

    # Return new path of temporary file.
    # @param [String] basename Set the basename of created filename
    def self.file(basename = nil)
      if basename
        File.join(self.directory, basename)
      else
        filename.create(:add => :always, :directory => :parent)
      end
    end

    # Delete all temporary directory.
    def self.delete
      if @root
        FileUtils.rm_r(@root)
        @pid = nil
        @root = nil
        @filename = nil
      end
    end

    def self.socket_path
      FileName.create(self.root, "socket", :add => :always, :type => :time)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
drbqs-0.1.1 lib/drbqs/utility/temporary.rb
drbqs-0.1.0 lib/drbqs/utility/temporary.rb