2

呼び出してみましたが、役に立たないと思います。これは、私が達成しようとしていることの短いデモです。

task :first_task  => :dep do 
   puts "something else"

end

task :dep do
   puts "something"
end

私が走れば

rake first_task

コマンドラインから、依存関係が満たされ、次に first_task が実行されます。

 something
 something else

しかし、:dep に dir = "testdir" という値があり、それを :first_task に引数として渡したい場合はどうすればよいでしょうか? それが理にかなっていることを願っています。

グーグルが何かを思いつくだろうと思ったが、違う。どうもありがとう :)

4

2 に答える 2

3

パラメータを設定または渡すことができるかどうかはわかりませんが、インスタンス変数を使用できます。

task :first_task  => :dep do
   puts "something else"
   puts @dir
end

task :dep do
  puts "something"
  @dir = "Foo"
end

またはローカル変数のみ:

dir = "default_dir"

task :first_task  => :dep do
   puts "something else"
   puts dir
end

task :dep do
  puts "something"
  dir = "Foo"
end

タスクの種類によっては、環境変数を設定する方が理にかなっている場合があります。

task :first_task  => :dep do
   puts "something else"
   puts ENV['dir']
end

task :dep do
  puts "something"
  ENV['dir'] = "Foo"
end
于 2013-07-28T17:24:24.780 に答える
2

あなたの質問には完全には当てはまりませんが、レーキを使用してパラメーターを子タスクに転送する別のアプローチを示す場合があります。Rake タスクはパラメーターを取得する場合があります。

例:

task :first_task, [:par1, :par2] do |t, args|
  puts "#{t}: #{args.inspect}"
end

このタスクは次のように呼び出すことができますrake first_task[1,2]。結果は次のようになります。

first_task: {:par1=>1, :par2=>2}

このパラメーターは、同じキーを共有する場合、子タスクに転送されます。例:

task :first_task, [:par1, :par2] => :second_task do |t, args|
  puts "#{t}: #{args.inspect}"
end

task :second_task, :par2 do |t, args|
  puts "#{t}: #{args.inspect}"
end

結果:

second_task: {:par2=>2}
first_task: {:par1=>1, :par2=>2}  
于 2013-07-28T19:58:11.540 に答える