rcodetools 0.8.0リリース
メーリングリストのコピペ。
rcodetools 0.8.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 「gem install rcodetools」でインストールできます。 http://eigenclass.org/hiki.rb?rcodetools 0.7.0([ruby-list:43652])からの変更点は以下の通りです。 * Ruby 1.9対応! * xmpfilter: ppを使った複数行注釈 * 「xmpfilter --expectations」でexpectationsのテストを生成 * anything-rcodetools.elを追加:anything.elで補完 * xmpfilterに「--tmpfile」オプションを追加 * rcodetools.el: xmpfilter-command関数がより賢くなった * rcodetools.el: M-x rct-forkが使えるようになった * rct-fork: より安定した * rct-fork: rubygemsをデフォルトでロードするようになった == Ruby 1.9対応 ついにRuby 1.9に対応しました。xmpfilter/rct-complete/rct-docで「-S」オ プションを指定すると、Rubyインタプリタを指定することができます。 例えば、以下のファイル(version.rb)をruby19で注釈するには、 「xmpfiler -S ruby19 version.rb」を実行します。 $ cat version,rb RUBY_VERSION # => $ xmpfilter -S ruby19 version.rb RUBY_VERSION # => "1.9.0" 簡単にRubyインタプリタを切り換えられるので、バージョンごとの動作比較が やりやすくなります。 == 複数行注釈 通常は「# =>」の後にinspectメソッドの結果を注釈していますが、巨大な配列 などを注釈すると行が長くなって見辛くなってしまいます。そこで、注釈した い式の次の行頭(インデント可能)に「# =>」を置くと、pretty_inspectメソッ ドでわかりやすく注釈されます。 a = [ 11111111111111112222222222222233333333333, "test array", [ :foo, :bar, :baz, :fobar], ] if true a # => 1 + 3 # => end ↓ (xmpfilter) a = [ 11111111111111112222222222222233333333333, "test array", [ :foo, :bar, :baz, :fobar], ] if true a # => [11111111111111112222222222222233333333333, # "test array", # [:foo, :bar, :baz, :fobar]] 1 + 3 # => 4 end == expectationsテスティングフレームワークによるテスト自動生成 xmpfilterに「--expectations」オプションをつけると、expectationsテスティ ングフレームワークによるテストが生成されます。 expectationsは「gem install expectations」でインストールできます。 理解しやすいテストコードになるのでお気に入りです。 require 'rubygems' require 'expectations' Expectations do 1+1 # => "aa".length # => end ↓ (xmpfilter --expectations) require 'rubygems' require 'expectations' Expectations do expect 2 do 1+1 end expect 2 do "aa".length end end == anything.el との連携 Emacs界隈で流行っているanything.elのインターフェースを利用してメソッド の補完を行う anything-rcodetools.el が添付されました。 http://d.hatena.ne.jp/rubikitch/20080104/1199438501 anything.elのメンテナも僕がやっています。anything.elの原作者から開発を 引き継ぎました。anything.elのバグレポ、要望などは<rubikitch __AT__ ruby-lang __DOT__ org> までメールください。 == xmpfilterで「--tempfile」、「--tmpfile」オプションを追加 Unix系OSではxmpfilterはopen3を使ってxmpfilterが生成する中間スクリプトを 実行しています。--tempfile、--tmpfileオプションをつけると、Windows同様 一時ファイルを利用するようになります。Ruby 1.9のエンコーディング対策で す。 xmpfilterのデフォルトは標準入力からのスクリプトなのでmagic commentなし でも日本語を認識します。(ロケールエンコーディング) == rct-forkで重いライブラリのロードもへっちゃら active_supportなど重いライブラリを使っている場合、注釈や補完がとても遅 くなってしまいます。なぜなら、注釈や補完のたびにスクリプトを実行してい るからです。「time ruby -rubygems -e 'require "active_support"'」でロー ド時間を計測すると、こちらの環境(Pentium4)では1秒前後もかかってしまい ます。 # rct-forkなしの場合 start = Time.now require 'rubygems' require 'active_support' 2.hour # => 7200 seconds # 経過時間 Time.now - start # => 0.962633 そこで、別の端末でrct-forkコマンドを使えば、予めロードされた状態で注釈 や補完が実行されるため、一瞬で実行が終わります。rct-forkはRubyGemsがロー ドされているので、この場合「rct-fork -r active_support」を実行します。 rct-forkを終了するときは、Ctrl+Cで強制終了してください。 Emacsの中でrct-forkを起動することもできます。「M-x rct-fork」でオプショ ンを入力します。rct-forkを終了するときは、「M-x rct-fork-kill」を実行し ます。rct-forkが起動中のときはモードラインに <rct-fork> と出ます。 Vimインターフェースは次のリリースでサポートするでしょう。 # 「rct-fork -r active_support」を実行したとき start = Time.now require 'rubygems' require 'active_support' 2.hour # => 7200 seconds # 経過時間 Time.now - start # => 0.006392 fork(2)を使っているので、rct-forkが使えるのはUnix系OSのみです。 それではHappy Hacking!