2011-02-23 61 views
21

有沒有辦法將命名參數傳遞給Rake任務而不使用環境變量?如何將命名參數傳遞給Rake任務?

我知道Rake任務可以用兩種格式接收參數:

環境變量

$ rake my_task foo=bar 

這將創建一個名爲foo,並可以在被訪問的值bar的環境變量耙子任務my_taskENV['foo']

rake任務參數

$ rake my_task['foo','bar'] 

這傳遞值foobar前兩個任務參數(如果它們被定義)。如果my_task被定義爲:

task :my_task, :argument_1, :argument_2 

然後argument_1將具有值fooargument_2將具有值bar

回答

23

你可以說這樣的事情:

rake some_task -- --arg=value 

然後,你的任務裏面,ARGV

[ 'some_task', '--arg=value' ] 

,所以你可以使用OptionParser(或其他一些選項解析器)來解壓縮ARGV就像在任何舊的CLI腳本中一樣;有趣的外觀--是必要的,以防止嘗試解析--arg=like作爲耙開關。

你可能使用標準的環境變量方法更好,它不像所有的--東西那樣醜陋,而且它是將參數傳遞給rake任務的常用方式。

相關問題