A Day in the Life

Irb/TipsAndTricks

http://www.rubygarden.org/ruby?Irb/TipsAndTricks
Ruby使いなら誰もが愛用している(と思われる)irbのtipsなどが書かれているrubygardenの1ページなんですが、ここのriを使ってリファレンス引く方法が超便利!refeに変えたら鼻血が出るほど便利だったので紹介。refeとは、

クラス名とメソッド名から Ruby のリファレンスマニュアルのエントリを引く、コマンドライン用のツールです。読みは「りふぇ」。 ri をパクって日本語・RD に対応させたものです。
http://i.loveruby.net/ja/prog/refe.html

という青木さん作のツールで、最近はgem化もされてるのでgem install refeでも一発インストールができます。で、先ほどのサイトで書かれてるriの箇所をちょっと変更して、~/.irbrcに

module Kernel
  def r(arg)
    puts `refe #{arg}`
  end
  private :r
end

class Module
  def r(meth = nil)
    if meth
      if instance_methods(false).include? meth.to_s
        puts `refe #{self}##{meth}`
      else
        super
      end
    else
      puts `refe #{self}`
    end
  end
end

などと書いておくと

>> Array.r :inspect
Array < Object#inspect
 --- inspect

    オブジェクトを人間が読める形式に変換した文字列を返します。

    組み込み関数 p は、このメソッドの結果を使用して
    オブジェクトを表示します。

=> nil
>> String.r :each
String#each
 --- each([rs]) {|line| ... }
 --- each_line([rs]) {|line| ... }

    文字列中の各行に対して繰り返します。行の区切りは rs に指定
    した文字列で、そのデフォルトは変数 $/ の値です。
    各 line には区切りの文字列も含みます。

    rs に nil を指定すると行区切りなしとみなします。
    空文字列 "" を指定すると連続する改行を行の区切りとみなします
    (パラグラフモード)。

    self を返します。

=> nil

とirbから引けて便利!また、~/.irbrcで

require 'irb/completion'

して補完を有効にしておくとsymbolでメソッド名が補完できるため

Array.r :del[tab] #=> Array.r :delete と補完される

とかできて超便利!Rubyプログラミング時には常時irbを立ち上げている人達にとっては使いどころが多そうです。

記事の一覧 >