如何使用commad行中的默认args调用rake任务?

时间:2015-07-30 18:09:22

标签: ruby command-line rake rake-task

我有一个rake任务,可以在xml文件中生成给定数量的项目。如果没有给出任何内容,我希望有一个默认值。到目前为止只打印了50个,但我想在这里有一个可变数量,如何从命令行调用它?

namespace :utilites do
  desc "generate xml"
  task generate_xml: :environment do |t, args|
    args.with_defaults(:length => 50)
    p args[:length]
  end

end

1 个答案:

答案 0 :(得分:1)

如果您将length定义为参数,则其工作正确:

namespace :utilities do
  desc "generate xml"
  task :generate_xml, :length do |t, args|
    args.with_defaults(:length => 50)
    p args[:length]
  end
end

结果:

C:\Temp>rake utilities:generate_xml
50

C:\Temp>rake utilities:generate_xml[99]
"99"

如您所见,给定参数是一个字符串!如果您需要一个号码,您必须在使用它之前进行转换。

我不知道你的:environment是什么。如果它应该是先决条件,您可以使用:

namespace :utilities do
  task :environment do
    puts "Run environment"
  end
  desc "generate xml"
  task :generate_xml, [:length] => :environment do |t, args|
    args.with_defaults(:length => 50)
    p args[:length]
  end
end