ruby - 如何让 Ruby Dir#glob 返回基本名称,而不是绝对路径?

标签 ruby absolute-path dir

FakeProfilePictures::Photo.all_large_names_2x(定义如下)返回绝对路径名数组,但是当我执行 Dir["picture_*@2x.*"]irb 中的正确目录,我只得到基本名称(我想要的)。获取基本名称的最佳方法是什么?我知道我可以通过添加 .map { |f| 来做到这一点File.basename(f) } 如评论中所示,但是否有更简单的/better/faster/stronger怎么办?

module FakeProfilePictures
  class Photo
    DIR = File.expand_path(File.join(File.dirname(__FILE__), "photos"))

    # ...

    def self.all_large_names_2x
      @@all_large_names_2x ||= Dir[File.join(DIR, "picture_*@2x.*")] # .map { |f| File.basename(f) }
    end
  end
end

最佳答案

你可以做到

Dir.chdir(DIR) do
  Dir["picture_*@2x.*"]
end

block 后,原来的目录被恢复。

关于ruby - 如何让 Ruby Dir#glob 返回基本名称,而不是绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810782/

相关文章:

ruby - RSpec 管道破裂

ruby - Rails 'raise StandardError.new' 和 'raise StandardError' 之间的区别

c# - C#中绝对路径的相对路径?

c - Dirent结构的成员

ruby - 在运行时向 ruby​​ 模块添加类

Ruby - 使用类实例访问来自不同模块的相同命名方法

html - 将css文件链接到html时,如何正确写出本地文件的绝对路径?

java - 如何确定加载类的绝对路径(如果有)?

Windows 命令行搜索带有目录的确切扩展名

php - 在目录中查找文件