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を立ち上げている人達にとっては使いどころが多そうです。