1

我想知道是否有可能從commande行將選項傳遞給任務,而不需要自己的Rakefile選項。如何將選項傳遞給Rake任務?

這是我的任務:

task :task do 
args = ARGV.drop(1) 
system("ruby test/batch_of_test.rb #{args.join(' ')}") 
args.each { |arg| task arg.to_sym do ; end } 
end 

這裏是我想成爲功能命令:

rake task --name test_first_one 

我要的結果是一樣的:

ruby test/batch_of_test.rb --name test_first_one 

對於此代碼,我收到此錯誤:

invalid option: --name 

如何將--name(或其他選項)傳遞給我的任務?

+1

的可能的複製[?我如何通過命令行參數rake任務(http://stackoverflow.com/questions/825748/how- do-i-pass-command-line-arguments-to-rake-task) – Robin

+0

不,我至少讀了兩遍。我的問題涉及到傳遞選項而不是完全的參數......(帶「 - 」或「 - 」)。 –

回答

1

這樣的:

task :task, [args] => :environment do |t, args| 
system("ruby test/batch_of_test.rb #{args.join(' ')}") 
args.each { |arg| task arg.to_sym do ; end } 
end 

,你這樣稱呼它。

rake task[args] 

UPDATE

task :task, [:options] => :environment do |t, args| 
arg = args[:options].pop 
options = args[:options] 
end 
+0

我得到了「壞模式」。然後我不想要這個語法... –

1

據我知道你不能添加標誌,以Rake任務。我認爲最接近的語法是使用ENV變量。

rake task NAME=test_first_one 

然後在你的任務:

name = ENV['NAME'] 
相關問題