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

时间:2016-06-02 16:45:27

标签: ruby temporary-files

在ruby中创建一个Tempfile时,它会传递INSERT INTO [mps] ([Title],[Des],UpdateNumber) VALUES(@title,@des,(select (max(isnull(UpdateNumber, 0))+1) from mps)) ,然后它会在结尾附加一个随机字符串。

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

basename

您可以看到它以file = Tempfile.new('hello') file.path # => something like: "/tmp/hello2843-8392-92849382--0" 开头,然后添加hello。虽然每次创建实例时此结尾都会改变。

这使得(至少对我来说)难以在其保存的目录中查找。

问题:

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

思想:

您可以使用hello2843-8392-92849382--0并对其进行解析,但这似乎过分了。

1 个答案:

答案 0 :(得分:9)

基本上你要求:

File.basename(file.path)

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

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