2014-12-04 92 views
2

這就是我想在我的Rakefile做:什麼是使用CLEAN rake任務的正確方法?

require 'rake/clean' 
CLEAN = ['coverage'] 

這是我在日誌中看到:

$ rake 
/code/foo/Rakefile:29: warning: already initialized constant CLEAN 
/Users/foo/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/clean.rb:61: warning: previous definition of CLEAN was here 

我不喜歡這些警告。什麼是正確的方法?

回答

4

'rake/clean'已經定義了常數CLEAN像這樣:CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"]。常量不意味着被覆蓋(儘管紅寶石會讓你)。如果你想指定要清理的文件,你應該創建類似於現有的rake任務。

現有任務運行:

Rake::Cleaner.cleanup_files(CLEAN) 

所以,你可以運行:

Rake::Cleaner.cleanup_files(['coverage']) 

清理你的覆蓋文件。

+0

非常感謝,這正是我一直在尋找的! – 2014-12-04 20:58:20

+0

如果'coverage'是一個目錄,並且您想清除其中的所有內容,您還可以將'Rake :: Cleaner.cleanup_files'傳遞給'FileList':'Rake :: Cleaner.cleanup_files(FileList ['coverage/**/* '])' – mbigras 2016-12-31 18:17:17

8

CLEAN是由預定義的clean任務使用的FileList。要添加您自己的文件以進行清理,請將它們添加到此列表中。您可以使用include方法:

require 'rake/clean' 
CLEAN.include 'coverage' 

現在運行rake clean如果有任何一個bean的創建將刪除你的文件,以及一組預定的臨時文件。

+0

比接受的答案恕我直言更好。這可以讓你使用預定義的'clean'任務來刪除你生成的文件。 – 2015-03-20 14:37:43

+0

這應該是被接受的答案 – 2016-03-21 08:43:24

+0

向CLEAN添加東西的另一種方式是'CLEAN <<'coverage'' – 2016-08-18 09:50:50

相關問題