【问题标题】:How to pass an option to a Rake task?如何将选项传递给 Rake 任务?
【发布时间】:2015-11-25 03:19:25
【问题描述】:

我想知道是否可以在不让 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(或其他选项)传递给我的任务?

【问题讨论】:

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


【解决方案1】:

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

rake task NAME=test_first_one

然后在你的任务中:

name = ENV['NAME']

【讨论】:

    【解决方案2】:

    像这样:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      相关资源
      最近更新 更多