带有splat参数的耙任务

问题描述 投票:11回答:1

我正在尝试创建一个rake任务,该任务需要一个必需的第一个参数,然后再加上我想合并到数组中的任意数量的其他参数:

rake course["COURSE NAME", 123, 456, 789]

我尝试了以下操作,但args[:numbers]只是带123的字符串,而不是所有数字。

task :course, [:name, *:numbers] => :environment do |t, args|
  puts args # {:name=>"COURSE NAME", :numbers=>"123"}
end
ruby-on-rails ruby rake ruby-on-rails-4 rake-task
1个回答
19
投票

从rake 10.1.0开始,您可以使用Rake::TaskArguments#extras

Rake::TaskArguments#extras

输出:

task :environment

task :course, [:name] => :environment do |t, args|
  name = args[:name]
  numbers = args.extras
  puts "name = #{name}"
  puts "numbers = #{numbers.join ','}"
end

对于rake <10.1.0,您可以创建足够大的参数列表。

这里是多达26个数字的解决方法:

$ rake "course[COURSE NAME, 123, 456, 789]"
name = COURSE NAME
numbers = 123,456,789
© www.soinside.com 2019 - 2024. All rights reserved.