加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 21:47:42 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个rake任务,它接受一个必需的第一个参数,然后我想把它们组合成一个数组的任意数量的附加参数: rake course["COURSE NAME",123,456,789] 我试过以下但是args [:numbers]只是一个字符串w / 123而不是所有的数字. task :course,[:name,*:numb
我正在尝试创建一个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读