2011-11-28 37 views
1

從文件列表中排除的文件,我有以下SRC = FileList['md/*.md']一個Rake文件,但我想排除某些文件關於Ruby

我已經試過

SRC = FileList['md/*.md'].exclude("md/header.md") 
SRC = FileList['md/*.md'].exclude(/header/) 
SRC = FileList['md/*.md'].exclude(/header.md$/) 

但它不工作,總是列出我的所有文件

一個例子:

代替我rakefile.rb的,我有以下內容的目錄MD:

rakefile.rb 
md/ 
    index.md 
    example.md 
    header.md 

我要列出所有不header.md

+0

你想排除哪些文件?在'exclude'之前你的'FileList'看起來像什麼?在'排除'之後'SRC'看起來像什麼? 「不起作用」是不夠的信息。 – Phrogz

回答

2

這對我工作得很好:

p FileList['md/*.md'] 
#=> ["md/example.md", "md/header.md", "md/index.md"] 

p FileList['md/*.md'].exclude("md/header.md") 
#=> ["md/example.md", "md/index.md"] 

p FileList['md/*.md'].exclude(/header/) 
#=> ["md/example.md", "md/index.md"] 

p FileList['md/*.md'].exclude(/header.md$/) 
#=> ["md/example.md", "md/index.md"] 
+0

現在這很奇怪,我不能讓它工作 – rkmax

+0

我有一個類似的問題我[其他職位](http://stackoverflow.com/questions/8279308/rakefile-rb-doesnt-work-correctly) – rkmax

0

不知道發生了什麼事情。也許這是你使用的Rake和/或Ruby的版本?我已經用ruby-1.8.7(rake 0.8.7和rake 0.9.2.2)和ruby-1.9.2(rake 0.8.7和rake 0.9.2.2)測試了你的片段。所有四種配置都能提供預期的輸出。

代碼:

puts "no exculde:" 
puts FileList['md/*.md'] 
puts '---' 
puts "exclude('md/header.md'):" 
puts FileList['md/*.md'].exclude('md/header.md') 
puts '----' 
puts "exclude(/header/):" 
puts FileList['md/*.md'].exclude(/header/) 
puts '----' 
puts "exclude(/header.md$/):" 
puts FileList['md/*.md'].exclude(/header.md$/) 

輸出:

no exculde: 
md/example.md 
md/header.md 
md/index.md 
--- 
exclude('md/header.md'): 
md/example.md 
md/index.md 
---- 
exclude(/header/): 
md/example.md 
md/index.md 
---- 
exclude(/header.md$/): 
md/example.md 
md/index.md 
+0

'紅寶石1.9 .2p290(2011-07-09修訂版32553)[x86_64-linux]'和'rake version 0.9.2.2'在ubuntu 11.10上 – rkmax