BT

Rubyプロジェクトで時間節約に役立つ3つのツール:Hoe 2.0.0、YARD、Whenever

| 作者: Werner Schuster フォローする 9 人のフォロワー , 翻訳者 能仁 信亮 フォローする 0 人のフォロワー 投稿日 2009年6月14日. 推定読書時間: 3 分 |

原文(投稿日:2009/6/12)へのリンク

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コードを使って、croncrontabファイルにエントリを自動的に作成できるようになる。
組み込み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の設定は読みやすく、おそらく修正もしやすいだろう。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT