Rakefile

Rakefileの文法は、通常のRubyプログラムにいくつかrake用の記述を追加したものです。つまりふつうRubyプログラムで実行可能なことは何でもできます。

最初の例として、挨拶だけするタスクを定義してみます。以下の内容をRakefileという名前で保存してください。

task :taskname がタスクの定義で、do...endの中にタスクの内容を記述します。これで、コマンドラインからrake helloを叩けばhelloという名前で定義したタスクが実行されます。

ここで、次のように:default:helloに設定しておけば、

rakeを叩くだけで:helloを実行できます。利用頻度の高いタスクはデフォルトにしてしまうと良いでしょう。

rakeに引数を渡す

先ほどの:helloタスクによく似た:goodbyeタスクを作成し、今度は相手の名前を引数に受け取るようにしてみましょう。task :goodbye, [:name, :nickname]とタスク名の後に引数リストを追加し、さらにブロック引数をふたつ(targs)定義します。

ここでtRake::Taskクラスのインスタンス、argsRake::TaskArgumentsクラスのインスタンスです。Rake::TaskArgumentsに対して引数名のメソッドを呼び出すことで、引数が取得できます。

引数付きのrakeコマンドを使うためには、以下のように、タスク名に続けた角カッコ([])の中にカンマ区切りで渡します。環境によってはダブルクオート("")で囲う必要があるので注意して下さい。

namespace(名前空間)

似たようなタスクをまとめたい時は、namespace(名前空間)を定義します。たとえば次のように、計算に関連するタスクをnamespace :mathdo...endブロックにまとめてみましょう。

namespace付きで定義したタスクを実行するには、math:squareのようにコロンでnamespaceを区切って指定します。

descでタスクに説明をつける

タスクが増えて来ると、どんなタスクが使えるのか一覧で見たくなります。そんなときに便利なのがdescrake -Tです。

今まで定義した:hello, math:square, math:cubeの1行上に、desc メソッドと説明文を追加します。

このdesc文はコメント代わりにコードの理解を助けてくれるばかりでなく、rake -Tを実行すると、次のようにタスク名とその説明を一覧表示してくれます。

次のページでは、ディレクトリやファイルを扱うrakeのユーティリティメソッドを紹介します。