2017-03-10

Rakefile でタスクを階層化する

Rake でタスク名がコロンで区切られてるようなものがある。それを作ってみる。

今回は rake -T と実行したら、次のような出力を返すタスクを例にする。

$ rake -T
$ rake -T
rake setup       # セットアップを行なう
rake setup:gem   # Gem をインストールする
rake setup:pods  # Pods をインストールする

Rakefile は次の通り:

#
# セットアップ用のタスク
#
desc "セットアップを行なう"
task :setup => %w[
     setup:gem
     setup:pods
]

namespace :setup do
  desc "Gem をインストールする"
  task :gem do
    sh "bundle -j4 --path vendor/bundle"
  end

  desc "Pods をインストールする"
  task :pods do
    sh "bundle exec pod install"
  end
end

これで、rake setup:gem と打てば Gem のインストールが行なわれるし、rake setup:pods で Pods のインストールが行なえる。

setup という namespace を作ってやるのがミソ。

あと setup namespace のタスクを一括で実行できるよう setup タスクも用意している。

同種のタスクを作る時に、見やすく・理解しやすく、使いやすい形として namespace は便利。

No comments:

Post a Comment