Ruby自动删除临时文件?

我糊涂了。 这是我的代码:

require 'csv' require 'tempfile' f = Tempfile.new('csv','/tmp') f.write 'just wanna test' f.close p f.path 

如果我打开输出路径,它是空的。

我想这是因为每次ruby会话退出时,TempFile都会自动从文件系统中删除。 但是,如何确切地知道文件何时被删除? 因为我正在考虑使用它在我的rails应用程序中创建临时文件,我担心如果文件在使用之前被删除了。

来自docs:

当Tempfile对象被垃圾收集时,或者当Ruby解释器退出时,其关联的临时文件将被自动删除。

因此,只要你的f在范围内,它就不会被删除。 如果退出Ruby,它将被删除。 如果你仍然在Ruby中但是f已经超出范围,那么它是不确定的(可能没有删除,但不保证存在,不应该使用。)

当收集垃圾时,临时文件被删除(它不再被引用,内存清理正在释放对象)。

如Ruby文档中所述 :

当Tempfile对象被垃圾收集时,或者Ruby解释器退出时,其关联的临时文件会自动删除…

只要你仍然持有对太阳穴物体的参考,你不应该担心它会被过早删除。