rcodetools 0.7.0リリース

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

rcodetoolsは俺とmfpで共同開発しているソフトウェアです。

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!