如何使用Ruby在 /TMP中直接创建一个随机的唯一文件



我正在编写一个应用程序,该应用程序在/tmp 中创建和放置一个日志文件,然后将此日志文件移至另一个目录。不幸的是,我在此实施方面遇到了一些问题,我想让该日志文件更加独特。

我遇到了mktemp,它将在/tmp 中自动创建一个文件。完美,正是我需要的!不幸的是,我似乎无法在Ruby工作。我尝试了以下内容而没有成功:

def temporary_logfile
    @temporary_logfile = `mktemp "#{File.basename($PROGRAM_NAME)}_#{Time.now.strftime('%Y%m%dT%H%M%S')}.logXXXX"`
end

我希望在/tmp 中看到我的日志文件,但不幸的是什么也没有发生。我想知道我做错了什么?

下一步是使用slice!从logfile名称中删除mktemp的随机生成字符,而不是将文件移动到其他地方。

请看一下Tempfile:https://ruby-doc.org/stdlib-2.6.6.3/libdoc/tempfile/rdoc/rdoc/tempfile.html

file = Tempfile.new('foo')
begin
   # ...do something with file...
ensure
   file.close
   file.unlink   # deletes the temp file
end

示例直接从Docu。

最新更新