Episodesを、本人の許可を得て翻訳します。Weirichによって作られたビルドユーティリティー)をほぼ確実に使ったことがあるだろう。Rakeがいかにパワフルでフレキシブルなツールになりうるかということは理解していないかもしれない。実際、私は、Quarto(自作のe-book製作ツールチェーン)の土台としてRakeを使うと決めるまで理解していなかった。この投稿はRakeについてのシリーズの一部で、基本から始めて高度な使用法に進む。2013年の8月から9月に購読者に向け公開されたRubyTapasビデオのシリーズのひとつをもとにしている。各投稿はビデオから始まり、ビデオより文字を好む人のためにスクリプトが続く。これらのエピソードを無料で公開するにあたり、より多くの人々が、この広く行き渡っているが過小評価されているツールのすべての能力を知り愛するようになることを願う。Fundへの寄付を検討して欲しい。これが前回までのいくつかのエピソードで使用したRakefileです。プロジェクトの“sources”サブディレクトリの中にMarkdownソースファイルがあり、“outputs”サブディレクトリの中に、並列の階層構造をなすHTMLファイルを生成します。html_file.ext('')}end“outputs”ディレクトリの中に入力ファイルの階層構造を再生成しているので、HTMLファイルを生成する前に、目的のディレクトリが存在することを保証する必要があります。Rakeでこれを実現する簡単な方法は、directoryタスクを使用することです。これはディレクトリを対象としていることを除けばfileタスクと似ていますが、fileタスクとは異なり、存在しない場合にディレクトリを作成する方法をコードとして与える必要がありません。タスクを定義することにより、必要ならばディレクトリを作成するようRakeに暗黙的に指示します。“.html”ルールに対して、このディレクトリを依存関係のリストに追加します。#{t.source}"endrakeを実行すると、HTMLファイルを生成する前にディレクトリが作成されることが確認できます。残念ながら、appendix.htmlファイルをビルドしようとする時に問題に遭遇します。このファイルはsourcesディレクトリのサブディレクトリの中にあるので、HTMLの出力ファイルは、outputsディレクトリの対応するサブディレクトリの中に出力して欲しいのです。このサブディレクトリはまだ存在しません。--trace)(訳注:1行目の先頭のtは原文のタイポと思われる。-pシェルコマンドを実行することも可能です。#{t.name.pathmap('%d')}"しかし、Rakeにはこのためのショートカットがあります。シェルコマンドを実行する代わりに、mkdir_pメソッドをタスクの中で使用することができます。}endここでrakeを実行すると、markdownからHTMLへの変換されるたびに、前もって対象ディレクトリが存在することが保証されます。sources/ch4.markdownビルドスクリプトを書いているときに、素早くすべての生成されたファイルを消す簡単な方法があれば便利なことはよくあります。これに対処するタスクを追加してみましょう。ここでも、シェルコマンドを実行する代わりに、Rakeのヘルパーメソッドを使用します。-rfコマンドに対応し、いかなる警告や確認もせずに再帰的にファイルとディレクトリを削除します。"outputs"endRakeにはこのようなフィル操作を行うヘルパーメソッドがたくさんあり、そのすべてがUNIXシェルの同等なコマンドにちなんで名づけられています。これは、いくつかの点で便利です。listを直接渡せます。Rakeの“quiet”フラグも感知します。Rakeコマンドは-qフラグつきで実行すると、必要な動作はすべて行いますが、STDOUTへの出力は行いません。-q$これらのヘルパーほとんどすべては、Rubyの標準ライブライであるFileUtilsから直接受け継がれています。documentationを確認してください。ハッピーハッキング!Rakeについてのエピソード・文章を楽しんでいただけたことを願っている。forward")」を検討して欲しい。今回のようなビデオをもっと見たければ、RubyTapasをじっくり見てほしい。興味深い方法でRakeを使っているなら、連絡して欲しい。(Atom)About神戸・阪神間のコワーキングスペース的なワークスペース、Nilquebe(ニルキューブ)のブログです。