| 開発者 | ジム・ウェイリッチ |
|---|---|
| 安定リリース | 13.2.1 [1]
/ 2024年4月5日 |
| リポジトリ |
|
| 書かれた | ルビー |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | ソフトウェア開発ツール |
| ライセンス | MITライセンス |
| Webサイト | ruby.github.io/rake/ |
Rake は、ジム・ワイリッチが作成したソフトウェアタスク管理およびビルド自動化ツールです。ユーザーはタスクを指定したり、依存関係を記述したり、タスクを名前空間にグループ化したりできます。SConsやMakeに似ています。Rake はRubyで書かれており、バージョン 1.9 以降、Ruby の標準ライブラリの一部となっています。[2] [3]
例
実行すべきタスクは、Rakefileと呼ばれる設定ファイルで定義する必要があります。Rakefileには特別な構文はなく、実行可能なRubyコードが含まれています。[4]
タスク
Rake の基本単位はタスクです。タスクには名前とアクション ブロックがあり、これが機能を定義します。次のコードは、コンソールに「Hello, Rake!」というテキストを出力する、greet というタスクを定義します。[5]
タスク:greet do puts "Hello, Rake!" end
タスクを定義するときに、オプションで依存関係を追加できます。つまり、1 つのタスクが別のタスクの正常な完了に依存することができます。次の例の「seed」タスクを呼び出すと、最初に「migrate」タスクが実行され、その後に「seed」タスクの実行が続行されます。[5]
task :seed => :migrate do # このタスクは :migrate タスクの終了後に実行されます
タスクは引数を受け入れることでより多用途にすることもできます。たとえば、「generate_report」タスクは引数として日付を受け取ります。引数が指定されていない場合は、現在の日付が使用されます。[5]
task :generate_report , [ :date ] do | t , args | report_date = args [ : date ] || Date.today # 指定された日付に基づいてレポートを生成するend
特別なタイプのタスクとしてファイルタスクがあり、ファイル作成タスクを指定するために使用できます。たとえば、次のタスクでは、実行可能プログラムを作成するために 2 つのオブジェクトファイル (「ao」と「bo」) が与えられます。[6]
ファイル"prog" => [ "ao" , "bo" ] do | t | sh "cc -o #{ t . name } #{ t . prerequisites . join ( ' ' ) } "終了
もう一つの便利なツールは、必要に応じてディレクトリを作成するために使用できるディレクトリコンビニエンスメソッドです。[7]
ディレクトリ"testdata/examples/doc"
ルール
ファイルが前提条件として指定されているが、そのファイル タスクが定義されていない場合、Rake は Rakefile で提供されるルールのリストを参照してタスクを合成しようとします。たとえば、タスクが定義されていないタスク "mycode.o" を呼び出そうとしているとします。Rakefile に次のようなルールがあるとします。
ルール'.o' => '.c' do | t | sh "cc #{ t . source } -c -o #{ t . name } "終了
このルールは、".o" で終わるすべてのタスクを合成します。前提条件として、拡張子が ".c" のソース ファイルが存在する必要があります。Rake が "mycode.c" という名前のファイルを見つけることができれば、"mycode.c" から "mycode.o" を構築するタスクを自動的に作成します。ファイル "mycode.c" が存在しない場合、Rake はそのファイルに対するルールを再帰的に合成しようとします。
タスクがルールから合成されると、タスクのソース属性は一致するソースファイルに設定されます。これにより、ユーザーはソースファイルを参照するアクションを含むルールを記述できます。[8]
高度なルール
任意の正規表現をルール パターンとして使用できます。さらに、proc を使用してソース ファイルの名前を計算することもできます。これにより、複雑なパターンとソースが可能になります。
次のルールは上記の例と同等です。
ルール( /\.o$/ => -> ( t_name ){ t_name . sub /\.o$/ , '.c' }) do | t | sh "cc #{ t . source } -c -o #{ t . name } "終了
注意: Ruby 構文の癖により、最初の引数が正規表現である場合は、ルールを括弧で囲む必要があります。
Javaファイルには次のルールが適用される可能性がある: [9]
ルール'.class' => -> ( t_name ){ t_name . sub ( /\.class$/ , '.java' ) . sub ( /^classes\// , 'src/' ) } do | t | java_compile ( t . source , t . name ) end
名前空間
大きなRakefileをより適切に整理するために、タスクを名前空間にグループ化することができます。[10]以下は簡単なRakeレシピの例です。
namespace :cake do desc 'パンケーキを作る' task :pancake => [ :flour , :milk , :egg , :baking_powder ] do puts "sizzle" end task :butter do puts "バター大さじ3杯を小さな四角形に切る" end task :flour => :butter do puts "バターの四角形を手でこねて小麦粉1 1/2カップに入れる" end task :milk do puts "牛乳1 1/4カップを加える" end task :egg do puts "卵1個を加える" end task :baking_powder do puts "ベーキングパウダー小さじ3 1/2杯を加える" end end
参照
参考文献
- ^ “リリース v13.2.1 · ruby/rake · GitHub”. GitHub . 2024年4月5日. 2024年6月21日閲覧。
- ^ 「Rake -- Ruby Make」。nd 。 2024年2月28日閲覧。
- ^ “NEWS”. nd 2016年3月4日時点のオリジナルよりアーカイブ。2024年2月29日閲覧。
- ^ 「Rakefile フォーマット」。GitHub。2024年 6 月 21 日閲覧。
- ^ abc 「Ruby on Railsチュートリアル:Rakeとタスク自動化を理解する」。2019年6月10日。 2024年6月21日閲覧。
- ^ 「Rakefile 形式 # ファイルタスク」。GitHub。2024年6 月 21 日閲覧。
- ^ 「Rakefile 形式 # ディレクトリタスク」。GitHub。2024年6 月 21 日閲覧。
- ^ 「Rakefile Format # Rules」。GitHub 。 2024年6月21日閲覧。
- ^ 「Rakefile フォーマット # 高度なルール」。GitHub。2024年6 月 21 日閲覧。
- ^ 「Rakefile フォーマット # 名前空間」。GitHub。2024年 6 月 21 日閲覧。
外部リンク
- Rake ドキュメント
