【问题标题】:How to get the name of an instance of Tempfile in Ruby?如何在 Ruby 中获取 Tempfile 实例的名称?
【发布时间】:2016-06-02 16:45:27
【问题描述】:

在 ruby​​ 中创建 Tempfile 时,它​​会接受您传递的 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.path.split('/').last 好像过分了?
  • @mlovic 考虑到有一个提取这个的函数,是的,这太过分了。它也可能会给出错误的答案,因为在某些平台上/ 可以在文件名中。
  • @tadman 抱歉,我没想到,你说得对。

标签: ruby temporary-files


【解决方案1】:

基本上你要求的是:

File.basename(file.path)

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

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

【讨论】:

    猜你喜欢
    • 2019-07-08
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    相关资源
    最近更新 更多