Rakefile
Rakefileの文法は、通常のRubyプログラムにいくつかrake用の記述を追加したものです。つまりふつうRubyプログラムで実行可能なことは何でもできます。
最初の例として、挨拶だけするタスクを定義してみます。以下の内容をRakefileという名前で保存してください。
task :taskname がタスクの定義で、do...endの中にタスクの内容を記述します。これで、コマンドラインからrake helloを叩けばhelloという名前で定義したタスクが実行されます。
ここで、次のように:defaultを:helloに設定しておけば、
rakeを叩くだけで:helloを実行できます。利用頻度の高いタスクはデフォルトにしてしまうと良いでしょう。
rakeに引数を渡す
先ほどの:helloタスクによく似た:goodbyeタスクを作成し、今度は相手の名前を引数に受け取るようにしてみましょう。task :goodbye, [:name, :nickname]とタスク名の後に引数リストを追加し、さらにブロック引数をふたつ(tとargs)定義します。
ここでtはRake::Taskクラスのインスタンス、argsは Rake::TaskArgumentsクラスのインスタンスです。Rake::TaskArgumentsに対して引数名のメソッドを呼び出すことで、引数が取得できます。
引数付きのrakeコマンドを使うためには、以下のように、タスク名に続けた角カッコ([])の中にカンマ区切りで渡します。環境によってはダブルクオート("")で囲う必要があるので注意して下さい。
namespace(名前空間)
似たようなタスクをまとめたい時は、namespace(名前空間)を定義します。たとえば次のように、計算に関連するタスクをnamespace :mathのdo...endブロックにまとめてみましょう。
namespace付きで定義したタスクを実行するには、math:squareのようにコロンでnamespaceを区切って指定します。
descでタスクに説明をつける
タスクが増えて来ると、どんなタスクが使えるのか一覧で見たくなります。そんなときに便利なのがdescとrake -Tです。
今まで定義した:hello, math:square, math:cubeの1行上に、desc メソッドと説明文を追加します。
このdesc文はコメント代わりにコードの理解を助けてくれるばかりでなく、rake -Tを実行すると、次のようにタスク名とその説明を一覧表示してくれます。
次のページでは、ディレクトリやファイルを扱うrakeのユーティリティメソッドを紹介します。







