我想使用(可能)Ruby的tempfile
库创建一个文件,但是我希望这个文件持续大约30分钟。
例如:
require 'tempfile'
def create_tempfile
temp = Tempfile.new('file')
temp.write('test')
path = temp.path
strt_time = Time.now
end_time = Time.now - start_time
if strt_time - end_time <= 1800
temp.unlink
else
# do something to make the file last 30 minutes
end
end
我不确定上面会做什么,但它得到了重点。所以我的问题是,有没有办法让我有一个文件,无论是temp
还是文本,只持续三十分钟,然后被删除或删除?目前我正在运行Windows 7
答案 0 :(得分:1)
除非您希望Ruby脚本运行30分钟,否则这是不可能的。将文件存储在特定文件夹(例如/tmp
)中并让Cron作业自动擦除超过特定时间的文件可能更容易。
答案 1 :(得分:1)
此Tempfile documentation示例显示了如何删除文件:
明确关闭
当垃圾收集Tempfile对象时,或者Ruby解释器退出时,会自动删除其关联的临时文件。这意味着在使用后不必显式删除Tempfile,尽管这样做是很好的做法:不显式删除未使用的Tempfiles可能会在文件系统上留下大量的临时文件,直到它们被垃圾回收。这些临时文件的存在会使确定新的Tempfile文件名变得更加困难。
因此,应始终在确保块中调用unlink或close,如下所示:
file = Tempfile.new('foo')
begin
...do something with file...
ensure
file.close
file.unlink # deletes the temp file
end
您可以使用Timeout强制关闭文件,也可以在sleep 60 * 30
块内创建文件后begin
。