Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > rakeライブラリ
Rake というコマンドラインツールを扱うライブラリです。
Rake は Make によく似た機能を持つ Ruby で書かれたシンプルなビルドツールです。
Rake は以下のような特徴を持っています。
@see make(1)
$ rake --help rake [-f rakefile] {options} targets... Options are ... -C, --classic-namespace トップレベルに Task, FileTask を定義します。 過去との互換性のためのオプションです。 -D, --describe [PATTERN] パターンにマッチしたタスクの詳細を表示して終了します。 パターンは省略可能です。 -n, --dry-run アクションを実行せずにタスクを実行します。 -e, --execute CODE Ruby のコードを実行して終了します。 -p, --execute-print CODE Ruby のコードを実行して結果を表示して終了します。 -E, --execute-continue CODE Ruby のコードを実行してから、タスクを実行します。 -I, --libdir LIBDIR ロードパスに LIBDIR を含めます。 -P, --prereqs タスクの依存関係を表示して終了します。 -q, --quiet 標準出力にログメッセージを表示しません。 -f, --rakefile [FILE] FILE を Rakefile として使用します。 -R, --rakelibdir RAKELIBDIR RAKELIBDIR にある *.rake ファイルを自動的にインポートします。 --rakelib デフォルトは rakelib です。 -r, --require MODULE Rakefile を実行する前に MODULE を require します。 --rules ルールの解決を追跡します。 -N, --no-search, --nosearch 親ディレクトリの Rakefile を検索しません。 -s, --silent --quiet に似ていますが、ディレクトリも表示しません。 -g, --system システム全体の Rakefile を使用します。('~/.rake/*.rake') -G, --no-system, --nosystem システム全体の Rakefile を使用しません。 -T, --tasks [PATTERN] パターンにマッチしたタスクの短い説明を表示して終了します。 パターンは省略可能です。 -t, --trace 全てのバックトレースを表示します。 -v, --verbose 標準出力にログメッセージを表示します (デフォルト)。 -V, --version このプログラムのバージョンを表示します。 -h, -H, --help このメッセージを表示します。
一から全て自分で書くことも出来ますが、あらかじめ定義されているタスクを 使用すると比較的複雑なタスクも簡単に定義することができます。 また、ルールやファイルタスクをうまく使うとタスクを簡潔に書くことが 出来る場合があります。Rakefile は普通の Ruby スクリプトと同じ文法で 書くことができるので工夫次第で Ruby にできることなら何でもできます。
簡単な例:
# coding: utf-8 task :hello do puts 'do task hello!' end
動的にタスクを定義する例:
# coding: utf-8 require 'rake/testtask' require 'rake/clean' # clean, clobber の二つのタスクを定義 task :default => [:test] 1.upto(8) do |n| Rake::TestTask.new("test_step#{n}") do |t| t.libs << "step#{n}" t.test_files = FileList["step#{n}/test_*.rb"] t.verbose = false end end desc 'execute all test' task 'test_all' => (1..8).to_a.map{|n| "test_step#{n}"}
タスクを機能させるためのコードです。 Rakefile 内のアクションはコードブロックで指定されます。(たいていは do/end ブロックで区切られます)
あるタスクが実行されると、それに含まれるアクションは定義された順番通りに全て評価されます。 invoke と違うのは execute はアクションを常に実行する点です (事前タスクを呼び出したり実行したりしません)。
ファイルとはファイルを作成するためのものです。(同じ名前のタスクもあります) ファイルタスクは呼び出されると以下の条件のいずれかを満たす場合のみタスクを実行します。 (1) 関連するファイルが存在しない場合 (2) 事前タスクで作成したファイルの方が新しい場合 普通のタスクを事前タスクに持つファイルタスクが常に実行されるのは、 普通のタスクが現在時刻をタイムスタンプとしているためです。
あるタスクが呼び出されると、最初にそのタスクが以前呼び出されたことがあるかチェックします。 呼び出されたことがあれば何もしません。そのタスクが初めて呼び出された場合は、そのタスクの 事前タスクを一つずつ呼び出します。最終的に、このタスクのアクションを実行する必要があるかどうか チェックします。このタスクを実行する必要があれば、アクションを実行します。 NOTE: このタスクを実行する必要が無い場合も事前タスクは呼び出されています。この振る舞いは将来変更予定です。
全てのタスクはゼロ個以上の事前タスクを持ちます。 タスク T に対する事前タスク P は必ずタスク T よりも前に呼び出されます。
タスクが明確に定義されていない場合に、ルールはタスクを合成するレシピになります。 ルールはふつうファイルタスクを合成します。
Rake ファイルにおける基本単位です。 タスクは名前と、事前タスクと、実行するアクションのリストを持ちます。
FileList | Alias of Rake::FileList |
Rake::Application | Rake で使用するメインのクラスです。 |
Rake::DefaultLoader | Kernel#import で使用するデフォルトのローダーです。 |
Rake::EarlyTime | このクラスは全てのタイムスタンプより前の時刻をあらわします。 |
Rake::FileList | このクラスは Array と基本的には同じです。 |
Rake::InvocationChain | 循環したタスクの呼び出しを検出するためのクラスです。 |
Rake::InvocationChain::EmptyInvocationChain | 呼び出し関係のトップレベルを表します。 |
Rake::NameSpace | タスクの名前空間を表すクラスです。 |
Rake::Task | タスクは Rakefile における基本単位です。 |
Rake::FileTask | ファイルタスクは時間に基づいた依存関係を解決することができるタスクです。 |
Rake::FileCreationTask | このタスクはファイルが存在しない場合にファイルを作成するタスクです。 |
Rake::MultiTask | 通常のタスクと同じですが、thread を用いて事前タスクを並列実行します。 |
Rake::TaskArguments | タスクに渡されるパラメータの管理をするクラスです。 |
Rake | Rake の主要なモジュールです。 |
Rake::Cloneable | 簡単に複製したオブジェクトを作成することができるようにするための Mixin モジュールです。 |
Rake::TaskManager | タスクを管理するためのモジュールです。 |
RakeFileUtils | カスタムバージョンの FileUtils のメソッドを提供します。 |
Rake::RuleRecursionOverflowError | ルールのネストが多すぎる場合に発生する例外です。 |
Rake::TaskArgumentError | 間違ったタスクの定義を行った場合に発生する例外です。 |
rake/classic_namespace | このライブラリは古い Rakefile を使用する場合のみ使用してください。 |
rake/clean | このライブラリは Rake タスクを定義しています。 |
rake/gempackagetask | Gem Spec ファイルを元にして Gem パッケージを作成するタスクを定義するためのライブラリです。 |
rake/loaders/makefile | Makefile をロードするためのライブラリです。 |
rake/packagetask | 配布するパッケージ (zip, tar, etc...) を作成するためのタスクを定義します。 |
rake/rake_test_loader | このライブラリを require すると、 コマンドラインからテスト対象のファイルをロードします。 |
rake/rdoctask | ドキュメントを作成するためのタスクを定義します。 |
rake/runtest | |
rake/tasklib | タスクのライブラリを作成するためのベースとなるクラスを扱うライブラリです。 |
rake/testtask | ユニットテストを実行するためのタスクを定義するライブラリです。 |
FileUtils#ruby
FileUtils#safe_ln
FileUtils#sh
FileUtils#split_all
Kernel#desc
Kernel#directory
Kernel#file
Kernel#file_create
Kernel#import
Kernel#multitask
Kernel#namespace
Kernel#rule
Kernel#task
Module#rake_extension
String#ext
String#pathmap
String#pathmap_explode
String#pathmap_partial
String#pathmap_replace