ruby-on-rails – 带有splat参数的Rake任务

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 带有splat参数的Rake任务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个rake任务,它接受一个必需的第一个参数,然后我想把它们组合成一个数组的任意数量的附加参数:
rake course["COURSE NAME",123,456,789]

我试过以下但是args [:numbers]只是一个字符串w / 123而不是所有的数字.

task :course,[:name,*:numbers] => :environment do |t,args|
  puts args # {:name=>"COURSE NAME",:numbers=>"123"}
end

解决方法

从rake 10.1.0开始,您可以使用 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 "course[COURSE NAME,789]"
name = COURSE NAME
numbers = 123,789

对于rake< 10.1.0你可以创建一个足够大的参数列表.这个hack最多可以使用26个数字:

task :course,*:a..:z] => :environment do |t,args|
  name = args[:name]
  numbers = args.values_at(*:a..:z).compact
  puts "name = #{name}"
  puts "numbers = #{numbers.join ','}"
end
原文链接:https://www.f2er.com/ruby/266884.html

猜你在找的Ruby相关文章