如何从命令行使用默认参数调用 rake 任务?

Dan*_*idt 5 ruby rake command-line 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
Run Code Online (Sandbox Code Playgroud)

knu*_*nut 7

如果您定义length为参数,则它可以正常工作:

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

结果:

C:\Temp>rake utilities:generate_xml
50

C:\Temp>rake utilities:generate_xml[99]
"99"
Run Code Online (Sandbox Code Playgroud)

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


我不知道你的: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
Run Code Online (Sandbox Code Playgroud)