Rakeメモ

: Rakeでプログラムを書く時に良く調べている内容などをまとめています

== Rakeとは ==
: '''Rake'''とはruby用のビルドプログラムのことで、特徴として以下のようなことが挙げられます
* Makefileに当たる'''Rakefile'''はRubyで記述することができる
* Rakefileでは処理の内容をタスク毎に記述していくことができるので、全体の流れを把握しやすい

== タスク関連の処理について ==
=== 指定したタスクを繰り返し呼び出したい場合 ===
: 正しい使い方なのかどうかは怪しいですが、とりあえず実行はできます

* Rake::Task#executeメソッドを使用する方法
# 呼び出されるタスク先の依存関係は考慮されないよう
# executeメソッドの引数には配列を渡す
 <u>使用例:</u>
 task :task_1 do
  for i in 1..3
   for j in 1..3
    Rake::Task[:task_2].execute([i, j]) # execute: 指定したタスクを繰り返し呼び出せるようにする
   end
  end
 end
 
 task :task_2 do |t, args| # argsのメンバとして引数の値が取れる
  puts args
  puts "i = #{args[0]}\tj = #{args[1]}"
 end

* Rake::Task#invokeメソッドとRake::Task#reenableメソッドを使用する方法
# 呼び出されるタスク先の依存関係は考慮される
# invokeメソッドの引数には変数を渡す
# 呼び出されるタスク先では渡された引数に対応する変数を指定する必要がある
# invokeメソッドの後にreenableメソッドを記述する
 <u>使用例:</u>
 task :task_1 do
  for i in 1..3
   for j in 1..3
    Rake::Task[:task_2].invoke(i, j)  # invoke: 指定したタスクを一度だけ呼び出せるようにする
    Rake::Task[:task_2].reenable   # re-enable: invokeメソッドをもう一度有効にする
   end
  end
 end
 
 task :task_2, :i, :j  # タスクの引数名を定義
 task :task_2 => [:task_3] do |t, args|
  puts args
  puts "i = #{args.i}\tj = #{args.j}"
 end
 
 task :task_3 do |t|
  puts t
 end

[[Category:三ノ宮|れいくめも]]

Comments