るびきちです。

rcodetools 0.7.0をリリースしました。
前バージョンよりもツールが増えて大幅にパワーアップしています。

rcodetools は Ruby のコードを扱うツール群です。
rcodetools には xmpfilter とエディタに依存しない開発支援ツールが含まれています。
Emacs と Vim のインターフェースも用意しています。

* xmpfilter: Test::Unit assert* / RSpec should* 自動生成、コード注釈
* rct-complete: 高精度メソッド名・クラス名・定数名等補完
* rct-doc: ドキュメント参照・コードナビゲーター
* rct-meth-args: 高精度メソッド情報リスト、TAGS ファイル作成
* rct-fork: Rails 等重いライブラリを予めロードし、補完を高速化する(サーバ)
* rct-fork-client: rct-fork サーバが保持する状態から Ruby スクリプトを実行する
* ruby-toggle-file: テストスクリプトと実装スクリプトを切り換える
* rbtest: 小規模スクリプトのための埋め込み Test::Unit


今回の目玉はテスト駆動補完(TDC)です。rcodetoolsの補完のやり方には大き
な問題点がありました。それは、補完する時点まで全てのコードを実行してし
まうことです。たとえば、補完する行の直前にファイルを削除するコードが含
まれていた場合、補完時にはファイルが削除されてしまいます。Rubyの場合、
高精度な補完をしたい場合は実際に実行してみる他はありません。「それが仕
様だ!」と言ってしまえばそれまでですが、自分も含め多くのユーザがこの副
作用問題に不満を持っています。

もうひとつの問題点は、実行されないメソッド内部での補完ができなかったこ
とです。

そこでユニットテストに注目しました。ユニットテストは繰り返し実行できる
よう後片付まできちんとしますね。ではユニットテストからメソッドを実行し
て補完情報を取れないかと考えました。この工夫で副作用問題は解決し、メソッ
ド内部での補完も可能になりました。しかも、通常のTDDのサイクルに簡単に組
み込めます。そのためこの補完手法をTDCと名付けました。

ではどうやってユニットテストのテストメソッドを選択するかですが、通常
TDDをやっているとテストメソッドと実装メソッドを行き来しますね。だから最
後にエディタに表示したテストスクリプトの(エディタ上の)カーソル上にあ
るテストメソッドを自動的に選択します。この行き来をするツールが
ruby-toggle-fileです。これで以下のサイクルでTDD/TDCができます。

(1) テストスクリプトを閲覧・修正
(2) ruby-toggle-fileで実装スクリプトへバッファを切り換え
(3) 『補完つき』で実装メソッド書ける!
(4) テスト
(5) ruby-toggle-fileでテストスクリプトへバッファを切り換え
(6) 1へ

rbtestは以前ruby-listに投げたスクリプトを焼き直したものです。小規模スク
リプトでTDCできるようにするために同梱しました。

rct-fork/rct-fork-clientはrailsなど重いライブラリを予めロードし、補完時
間を短縮します。ZenTestに含まれるruby_fork/ruby_fork_clientの
rcodetools版です。demo/fork-demo.shを実行すればデモが始まります。

エディタインターフェースではよきにはからってくれます。スクリプト内に
rbtest形式を発見すればrbtestを使って補完しますし、rct-forkが起動中が存
在すればrct-fork-clientを使います。

それではHappy Hacking!

http://eigenclass.org/hiki.rb?rcodetools

--
rubikitch
http://www.rubyist.net/~rubikitch/