Module: Stud::Temporary
Constant Summary collapse
- DEFAULT_PREFIX =
"studtmp"
Instance Method Summary collapse
-
#directory(prefix = DEFAULT_PREFIX, &block) ⇒ Object
Make a temporary directory.
-
#file(prefix = DEFAULT_PREFIX, *args, &block) ⇒ Object
Return a File handle to a randomly-generated path.
-
#pathname(prefix = DEFAULT_PREFIX) ⇒ Object
Returns a string for a randomly-generated temporary path.
Instance Method Details
#directory(prefix = DEFAULT_PREFIX, &block) ⇒ Object
Make a temporary directory.
If given a block, the directory path is given to the block. WHen the block finishes, the directory and all its contents will be deleted.
If no block given, it will return the path to a newly created directory. You are responsible for then cleaning up.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/stud/temporary.rb', line 45 def directory(prefix=DEFAULT_PREFIX, &block) path = pathname(prefix) Dir.mkdir(path) if block_given? begin block.call(path) ensure FileUtils.rm_r(path) end else return path end end |
#file(prefix = DEFAULT_PREFIX, *args, &block) ⇒ Object
Return a File handle to a randomly-generated path.
Any arguments beyond the first (prefix) argument will be given to File.new.
If no file args are given, the default file mode is “w+”
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/stud/temporary.rb', line 23 def file(prefix=DEFAULT_PREFIX, *args, &block) args << "w+" if args.empty? file = File.new(pathname(prefix), *args) if block_given? begin block.call(file) ensure file.close unless file.closed? File.unlink(file.path) end else return file end end |
#pathname(prefix = DEFAULT_PREFIX) ⇒ Object
Returns a string for a randomly-generated temporary path.
This does not create any files.
11 12 13 14 15 |
# File 'lib/stud/temporary.rb', line 11 def pathname(prefix=DEFAULT_PREFIX) root = ENV["TMP"] || ENV["TMPDIR"] || ENV["TEMP"] || "/tmp" return File.join(root, "#{prefix}-#{SecureRandom.hex(30)}") end |