2012-01-11 74 views
0

这里混淆是我的代码生成的文件由红宝石/耙文件清单:

files = FileList.new('c:/temp/**/*') do |fl| 
    fl.exclude("*.dll")  
    end 
    puts files 

怎么来的输出仍然包含* .dll文件的列表?我错过了什么?

回答

2

因为传递给fl.exclude的全局模式与实际文件系统相同,就像/temp全局模式一样,但由于它不是完整路径,所以无法进行相同的匹配。

fl.exclude 'c:/temp/**/*.dll' 
1

[继DigitalRoss的答案]或者您可以在一个正规表示法的模式,看到docs。所以这应该工作

files = FileList.new('c:/temp/**/*') do |fl| 
    fl.exclude(/\.dll$/) 
end 

puts files