如何在 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
在 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