假设我有一个佣金任务
task :aa, [:pp1, :pp2, :pp3] do |t, args|
args.with_defaults(:pp2 => "fff")
puts args.pp1
puts args.pp2
puts args.pp3
end
如何传递第一个和第三个参数的rake,从默认值中取出第二个参数?在“rake aa [1,2,3]”调用的方括号中是什么类型的对象?
答案 0 :(得分:0)
您可以使用所需的参数(和序列)定义其他任务(在我的示例aa2
中)。如果参数具有相同的名称,则该参数将转发到先决条件。
require 'rake'
task :aa, [:pp1, :pp2, :pp3] do |t, args|
args.with_defaults(:pp2 => "fff")
puts args.pp1
puts args.pp2
puts args.pp3
end
task :aa2, [:pp1, :pp3] => :aa
用以下方式调用:
rake aa2[1,3]
答案 1 :(得分:0)
所以我最终使用旧的rake语法来传递params
rake aa pp1=1 pp3=vvv
因此,ENV可以使用pp1和pp3。然后我替换args中的默认值,如果我找到一个具有相同名称的param,它将通过CLI传递。
args.to_hash.each_key { |k| args.to_hash[k] = ENV[k.to_s] if ENV.has_key?(k.to_s) }
之后,我可以使用很好的args.param语法获得任何参数。