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のユーティリティメソッドを紹介します。