0

レーキタスクがあるとしましょう

task :aa, [:pp1, :pp2, :pp3] do |t, args|
  args.with_defaults(:pp2 => "fff")
  puts args.pp1
  puts args.pp2
  puts args.pp3
end

デフォルトから2番目のパラメーターを取得して、1番目と3番目のパラメーターのみをレーキに渡すにはどうすればよいですか?「rakeaa[1,2,3]」の呼び出しで角かっこで囲まれたものはどのタイプのオブジェクトですか?

4

2 に答える 2

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]
于 2012-07-24T18:36:52.987 に答える
0

そのため、パラメータを渡すために古いrake構文を使用することになりました

rake aa pp1=1 pp3=vvv

したがって、pp1 と pp3 は ENV で使用できます。次に、CLI 経由で渡される同じ名前のパラメーターが見つかった場合は、args のデフォルトを置き換えます。

args.to_hash.each_key { |k| args.to_hash[k] = ENV[k.to_s] if ENV.has_key?(k.to_s) }

その後、素敵な args.param 構文で任意のパラメーターを取得できます。

于 2012-07-24T22:02:30.167 に答える