2011-04-27 73 views
7

FakeProfilePictures::Photo.all_large_names_2x(定义见下文)返回的绝对路径名数组,但是当我在做irbDir["picture_*@2x.*"]正确的目录,我只得到了基本名称(我想)。获得基名的最好方法是什么?我知道我可以通过添加.map { |f| File.basename(f) }来做到这一点,如评论中所示,但有没有更简单的方法?如何让Ruby Dir#glob返回基本名称,而不是absolute_paths?

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 

回答

19

您可以在块后做

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

,原来DIR恢复。

+0

不错。 '@@ all_large_names_2x || = Dir.chdir(DIR){Dir [“picture_ * @ 2x。*”]}'工作!谢谢!我想我会去那个因为它代码少,可能更快?谁知道... – ma11hew28 2011-04-27 22:02:51

2

你可以chdirDIR通配符之前,但我只想通过basename运行一切。

+0

为什么?那么@J -_- L的解决方案呢?我想我更喜欢那个。 – ma11hew28 2011-04-27 22:00:05

相关问题