FrequentlyAskedQuestions
4.1 あるタスクの中から別のタスクを呼び出すこには、どうすれば良いのでしょうか?
通常、あるタスク(:secondary と仮定)から、別のタスク(:primary と仮定)を実施するには、:secondary の前提条件として、:primary が実施済みであることを指定するのが、一般的です。
- 例
task :primary => [:secondary] task :secondary do puts ":secondary の実施。" end
しかし、まれにではありますが、:primary タスクの中で、:secondary タスクを実行したいというケースも存在します。その場合は以下のようにして実現できます。
task :primary do Rake::Task[:secondary].invoke end task :secondary do puts ":secondary の実施。" end
上記の方法を選んだ場合、以下を念頭に置いてください。
- :primary タスクが実施される際に、その中で :secondary タスクが実施されます。
- :secondary タスクのすべての前提条件は、:primary の前ではなく、:secondary タスクの前に実施されます。
- もし、一度でも :secondary タスクが実施されれば、例え明示的に指定されても、再度実施されることはありません。Rake のタスクは、実行時に一度だけです
もし、二つめと三つ目の条件が気に入らない場合は、通常の Ruby のメソッドを使って :secondary タスクと :primary タスクで、そのメソッドを呼び出すことを考慮する必要があるでしょう。以下のようにです。
task :primary do secondary_task end task :secondary do secondary_task end def secondary_task puts ":secondary の実施。" end
Keyword(s):
References:[SideMenu] [AboutRakeUserGuide]