- 公開日
他のrakeタスクに依存するrakeタスクの実行
rakeタスクの前に別のrakeタスクを実行
ある特定のRakeタスクを実行する前に別のタスクを実行したい場合、このようにタスクを書きます。
task(:x) { puts "x" }
task(:y) { puts "y" }
task(:z) { puts "z" }
desc "dependency rake task"
task foo: [:x, :y, :z] do
puts "foo task"
end
結果はこんな感じ。
$ rake foo
x
y
z
foo task
タスクx
, y
, z
が実行された後にタスクfoo
が実行されます。
別の方法
また下記のようにfoo
タスクのみ先に定期して、別のtaskとして依存を定義することも可能です。
task(:x) { puts "x" }
task(:y) { puts "y" }
task(:z) { puts "z" }
desc "dependency rake task"
task(:foo) do
puts "foo task"
end
task foo: [:x, :y, :z]
$ rake foo
x
y
z
foo task
rakeタスクの後に別のrakeタスクを実行
ある特定のRakeタスクを実行する後に別のタスクを実行したい場合、enhance
を使ってこのようにタスクを書けます。さっきの書いたタスクをenhanceしてみましょう。
task(:x) { puts "x" }
task(:y) { puts "y" }
task(:z) { puts "z" }
desc "dependency rake task"
task foo: [:x, :y, :z] do
puts "foo task"
end
Rake::Task["foo"].enhance do
puts "foo enhancing task"
end
結果はこんな感じ。
$ rake foo
x
y
z
foo task
foo enhancing task
enhance
の中にかいた処理はしっかりfoo
タスクのあとに実行されていますね。