Class: Dir
- Inherits:
-
Object
- Object
- Dir
- Defined in:
- lib/rubysl/tmpdir/tmpdir.rb
Defined Under Namespace
Modules: Tmpname
Class Method Summary collapse
-
.mktmpdir(prefix_suffix = nil, *rest) ⇒ Object
Dir.mktmpdir creates a temporary directory.
-
.tmpdir ⇒ Object
Returns the operating system’s temporary file path.
Class Method Details
.mktmpdir(prefix_suffix = nil, *rest) ⇒ Object
Dir.mktmpdir creates a temporary directory.
The directory is created with 0700 permission.
The prefix and suffix of the name of the directory is specified by the optional first argument, prefix_suffix.
-
If it is not specified or nil, “d” is used as the prefix and no suffix is used.
-
If it is a string, it is used as the prefix and no suffix is used.
-
If it is an array, first element is used as the prefix and second element is used as a suffix.
Dir.mktmpdir {|dir| dir is ".../d..." }
Dir.mktmpdir("foo") {|dir| dir is ".../foo..." }
Dir.mktmpdir(["foo", "bar"]) {|dir| dir is ".../foo...bar" }
The directory is created under Dir.tmpdir or the optional second argument tmpdir if non-nil value is given.
Dir.mktmpdir {|dir| dir is "#{Dir.tmpdir}/d..." }
Dir.mktmpdir(nil, "/var/tmp") {|dir| dir is "/var/tmp/d..." }
If a block is given, it is yielded with the path of the directory. The directory and its contents are removed using FileUtils.remove_entry_secure before Dir.mktmpdir returns. The value of the block is returned.
Dir.mktmpdir {|dir|
# use the directory...
open("#{dir}/foo", "w") { ... }
}
If a block is not given, The path of the directory is returned. In this case, Dir.mktmpdir doesn’t remove the directory.
dir = Dir.mktmpdir
begin
# use the directory...
open("#{dir}/foo", "w") { ... }
ensure
# remove the directory.
FileUtils.remove_entry_secure dir
end
79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/rubysl/tmpdir/tmpdir.rb', line 79 def Dir.mktmpdir(prefix_suffix=nil, *rest) path = Tmpname.create(prefix_suffix || "d", *rest) {|n| mkdir(n, 0700)} if block_given? begin yield path ensure FileUtils.remove_entry_secure path end else path end end |
.tmpdir ⇒ Object
Returns the operating system’s temporary file path.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/rubysl/tmpdir/tmpdir.rb', line 20 def Dir::tmpdir tmp = '.' if $SAFE > 0 tmp = @@systmpdir else for dir in [ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'], @@systmpdir, '/tmp'] if dir and stat = File.stat(dir) and stat.directory? and stat.writable? tmp = dir break end rescue nil end File.(tmp) end end |