Ruby 如何从commad行调用具有默认参数的rake任务?

Ruby 如何从commad行调用具有默认参数的rake任务?,ruby,command-line,rake,rake-task,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

我有一个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

如果将
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"
如您所见,给定的参数是一个字符串!如果你需要一个数字,你必须在使用之前转换它


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

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