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