我想知道是否可以将一个选项从命令行传递给任务而不需要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(或其他选项)传递给我的任务?
答案 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']