Kyl*_*cot 10 ruby rake ruby-on-rails rake-task ruby-on-rails-4
我正在尝试创建一个rake任务,它接受一个必需的第一个参数,然后我想把它们组合成一个数组的任意数量的附加参数:
rake course["COURSE NAME", 123, 456, 789]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但args[:numbers]只是一个字符串w/123而不是所有的数字.
task :course, [:name, *:numbers] => :environment do |t, args|
puts args # {:name=>"COURSE NAME", :numbers=>"123"}
end
Run Code Online (Sandbox Code Playgroud)
Ste*_*fan 18
从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
Run Code Online (Sandbox Code Playgroud)
输出:
$ rake "course[COURSE NAME, 123, 456, 789]"
name = COURSE NAME
numbers = 123,456,789
Run Code Online (Sandbox Code Playgroud)
对于rake <10.1.0,您可以创建一个足够大的参数列表.这个hack最多可以使用26个数字:
task :course, [:name, *:a..:z] => :environment do |t, args|
name = args[:name]
numbers = args.values_at(*:a..:z).compact
puts "name = #{name}"
puts "numbers = #{numbers.join ','}"
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2035 次 |
| 最近记录: |