2011-11-16 155 views
3

我需要定義一個rake任務,它可以處理任意數量的參數,非常像C++中的可變參數函數。但是我找不到在rake的DSL中定義它的方法。Rake「variadic」任務

如何創建一個可以處理任意數量參數的rake任務? 一個例子會很有用。

謝謝!

+0

傳遞一個數組? – m0skit0

+1

請解釋一下如何將它傳遞給數組? – Yossi

回答

2

從版本0.8開始的Rake不能處理這個問題,正如它的文檔中所提到的(它只是忽略了任何附加的參數)。

但是,如果您可以切換到使用Thor,則可以獲得此行爲。爲了演示,創建一個Thorfile與此內容:

class VariableArguments < Thor 
    desc 'multiple [ARGS]', "Task with multiple arguments" 
    def multiple(*args) 
    p args 
    end 
end 

,然後調用它像這樣:

$ thor variable_arguments:multiple one two three four five six 

此打印如下:

["one", "two", "three", "four", "five", "six"] 

(使用雷神0.14.6測試)

0

建立在這裏的帖子:How do I pass command line arguments to a rake task我會認爲arg1只是一個數組,你可以做一個array.each do | arg |。從命令行來看,這將是他們通過引用的,逗號分隔的列表的問題。

+0

好主意。可惜它不工作:) – Yossi

+0

是的,我正在挖掘一些文章和參數需要單獨傳遞,任務需要提前知道具體論點。任何人獲得數組的唯一方法是提前定義它,然後在代碼中進行解釋。 – ScottJShea