Rubyプロジェクトの作成とデプロイに関する「ヤクの毛を刈る活動」(本来の問題を解くために必要な別の問題を解決するための活動)の一部を軽減してくれる3つのRubyのツールを見ていこう。
プロジェクトに関して最初に行うのは、プロジェクトの作成だ。ディレクトリを準備して 、Rakefileや Gemsのメタデータといった基本的なファイルを作成する。 Hoeは、これらの手順を全て自動化してくれる。インストール後(sudo gem install hoe)、プロジェクトの作成は次のように簡単に行える。
sow my_project_name
これで新しいプロジェクトとディレクトリ、必要なファイルがすべて作成され、プロジェクト名が設定される。さらに重要なことは、gemファイルの作成や、RubyForgeへの送信、リリースのアナウンスといった様々なプロセスを自動化してくれるタスクがプロジェクトに設定されることだ。タスクの一覧は、次のコマンドをプロジェクトのディレクトリで実行することで確認できる。
rake --describe
Hoeの設定はプロジェクトのRakefileで次のように行える。
Hoe.new('my_project_name, my_project_name::VERSION) do |p| # 設定オプションをRubyのコードで記述 end
Hoe 2.0.0が最近リリースされ、モジュールによる拡張といった改良が加えられている。
プロジェクトが設定できたら、いよいよコードを書くことになる。その際、必要なドキュメントもあわせて書くことが望ましい。Ruby開発者は、RDocに慣れ親しんでいるが、YARDという競合ツールも利用可能だ。YARDはRubyのコードに拡張性とJavadocスタイルのアノテーションを提供する。開発(YARD Githubレポジトリ)のスピードは開発者の言わせると遅いが、新しいリリースにはいくつかの改善が含まれている。
0.2.3リリースの変更点の一つは、Rubyのコードをパースする新しい方法だ。RDocやYARDといったツールは、クラスやメソッドやRubyのソースコードの様々な側面を見つけ出すためにRubyのコードをパースする必要がある。
YARDは、1.8.x上で動くときには、引き続き独自のパーサを利用するが、Ruby1.9.x上ではRipperを使って、RubyソースコードのAST(抽象構文木)を取得する。Ripperを使うことで、パフォーマンスが向上し、パース結果もより正確になる(完全なRubyパーサーを一からつくるには時間がかかる。RipperはRuby VMで利用されている構文木にアクセスすることができるのだ)。
最終的にプロジェクトがデプロイされた際には、繰り返し実行するタスクの設定や修正が必要となることがある。こういった用途で一般的に使われるツールは、Unixシステム上ではcron
だろう。Wheneverを利用することで、ちょっとしたRubyコードを使って、cron
のcrontab
ファイルにエントリを自動的に作成できるようになる。
組み込みDSLを使ったRakeやHoeなどと同じ方式で、Wheneverは設定できる。WheneverのWikiにある例をあげると次のようなものだ。
every 2.days, :at => '4:30am' do command "/usr/bin/my_great_command" end
これが、次のcron
のエントリに変換される。
30 4 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 * * /usr/bin/my_great_command
crontab
の書式を学ぶ機会がなかった開発者にも、Wheneverの設定は読みやすく、おそらく修正もしやすいだろう。