2007-08-01
■ [ruby] irbを使う前にしておくべき3つ(+α)の設定
Rubyで試行錯誤しながら開発したいときにはirbを使うのが便利です。 今日はirbをさらに便利にする設定をいくつか紹介します。
ホームディレクトリ*1に .irbrc というファイルを 作り、そこに設定を書いていきます。
(1) タブ補完
# --- completion require 'irb/completion'
メソッド名をTABキーで補完できるようになります。
例:
yhara@meteor:~ % irb >> a = [] => [] >> a.ind[TAB] a.index a.indexes a.indices
(2) リファレンス検索
IRB上から「r」というメソッドでrefeを引けるようになります。
例:
>> r :partition Enumerable#partition --- partition {|item| ... } ruby 1.7 feature 各要素に対してブロックを評価した値が真であった要素からなる配列と 偽であった要素からなる配列からなる配列を返します。 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0].partition { |i| i % 3 == 0 } #=> [[9, 6, 3, 0], [10, 8, 7, 5, 4, 2, 1]] => nil >> r :inspect Iconv::Failure#inspect Included#inspect Method#inspect Object#inspect OptionParser::ParseError#inspect Syslog#inspect TMail::Mail#inspect => nil
クラスを指定したいときは「r "Array#inspect"」とか、「Array.r :inspect」のようにします。
(3)結果の色付け
wirbleというgemをインストールするとirbの実行結果に色が付くようになります。
# --- wirble require 'rubygems' require 'wirble' Wirble.init Wirble.colorize
(おまけ)長すぎる出力を切り詰める
File.readなど、巨大なStringを返すメソッドを呼ぶと、IRBの出力がやたら長くなってちょっと鬱陶しいですよね。 こんな時に、出力の先頭以外を省略する設定を考えてみました。
なお実装の都合上Wirbleを先にロードしておかなければいけません。 *2
# --- truncate long output (load wirble first!) module IRB class Irb CUT = 1000 def output_value if @context.inspect? s = @context.last_value.inspect if s.size > CUT s = s.slice!(0, CUT) + "...(snipped)" end printf @context.return_format, Wirble::Colorize.colorize(s) else printf @context.return_format, @context.last_value end end end end
(おまけ2) irb中でもlsを使えるようにする
手が空くとついlsを打ってしまうあなたにお薦めです(笑)。
def ls print `ls -CF` end
オプションはお好みで。
ついでにcdも実装……とかやってるとirbshになってしまいそうなので 今回はこの辺で。
Enjoy irbing!
LL魂の会場でちらっとお話した、Wirbleの履歴の保存の話です。<br>http://d.hatena.ne.jp/masa_edw/20070703/1183470510
> 履歴の保存<br>どうもです。ちょっと手元でも試してみます。