如何将选项传递给Rake任务?

时间:2015-11-24 11:39:19

标签: ruby-on-rails ruby parameters command-line-arguments rakefile

我想知道是否可以将一个选项从命令行传递给任务而不需要Rakefile为自己选择。

这是我的任务:

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(或其他选项)传递给我的任务?

2 个答案:

答案 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]

更新

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

答案 1 :(得分:1)

据我所知,你不能为Rake任务添加标志。我认为最接近的语法是使用ENV变量。

rake task NAME=test_first_one

然后在你的任务中:

name = ENV['NAME']