maeshimaの日記

メモ書きです

rake

rakeファイルの書き方を必要そうなとこだけざっくり調べた。

タスク

  • 引数の書式は下記の二通り
    • 処理したいタスクの名前のString
    • 処理したいタスク => 依存するタスクのハッシュ
  • ブロック中の処理が実行される
  • "default"のみ予約語。実行タスクが指定されない場合、defaultタスクが実行される
task "default" => "dist"

task "dist" => ["init", "compile"] do
  puts "-- make distribution --"
end

task "init" do
  puts "-- initialize -- "
end

task "compile" do
  puts "-- compile --"
end

ファイルタスク

ファイル生成に特化したタスクをファイルタスクという。書式はtaskメソッドの代わりにfileメソッドを使うくらいで後は同じ?

ファイルタスクは、依存先ファイルの更新日時を調べて、目的ファイルよりも新しくなっているときだけビルド作業を実施する。

CC = "gcc"

task :default => "hello"

file "hello" => ["hello.o", "message.o"] do |t|
  sh "#{CC} -o #{t.name} #{t.prerequisites.join(' ')}"
end

file "hello.o" => "hello.c" do |t|
  sh "#{CC} -c #{t.prerequisites[0]}"
end

file "message.o" => "message.c" do |t|
  sh "#{CC} -c #{t.prerequisites[0]}"
end

タスクの説明

taskの直前にdesc "説明文"とすると説明が書ける

名前空間

namespaceメソッドで名前空間を定義。ネストも出来る。

namespace :client do

  namespace :web do
    desc "build Web client components"
    task :build do
      puts "build Web client components..."
    end
  end

  namespace :java do
    desc "build Java client components"
    task :build do
      puts "build Java client components..."
    end
  end

end

namespace :server do
  desc "build server components"
  task :build do
    puts "build server components..."
  end
end