如何在 Ruby 中获取 Tempfile 实例的名称?

How to get the name of an instance of Tempfile in Ruby?

在 ruby 中创建临时文件时,它会接受您传递给它的 basename,然后它会在末尾附加一个随机字符串。

来自文档: http://ruby-doc.org/stdlib-1.9.3/libdoc/tempfile/rdoc/Tempfile.html

file = Tempfile.new('hello')
file.path  # => something like: "/tmp/hello2843-8392-92849382--0"

您可以看到它以 hello 开头,然后添加 2843-8392-92849382--0。虽然每次创建实例时这个结局都会改变。

这使得很难(至少对我而言)在其保存的目录中进行查找。

问题:

是否有任何方法(如 file.fullName)可以在实例上 运行 来获取 hello2843-8392-92849382--0,以便在其保存的目录中查找它?

想法:

您可以使用 path 并解析它,但这似乎太过分了。

基本上你要求的是:

File.basename(file.path)

很少有理由需要将其作为方法公开,但如果您愿意,可以子类化 Tempfile 以将其添加到:

class SuperTempfile < Tempfile
  def basename
    File.basename(path)
  end
end