対話シェル
個人メモ
自分はよくPythonを使っているとき,Pythonシェル(ipythonなど)で dir関数を使って中身を片っ端から覗いて,さらにhelp関数で使用方法を確認したりしていた.
Rubyの場合はどうやるんだろと調べてみた.( toshi78 さんにも協力していただいちゃいました.ありがとうございます.) Rubyシェル(irb)で Object.methods とやるとオブジェクトが持つメソッドを見ることができた.ん~とりあえずこれでいいかな!?
ほんで,help関数にあたるモノを探すと refe というのをインストールするとRubyのリファレンスからエントリを引っ張ることができるとのこと. では早速,
$ sudo /usr/local/ruby/bin/gem install refe
インストールできたようなので実験
$ refe String concat
String#concat
--- self << other
--- concat(other)
文字列 other の内容を self に連結します。
other が 0 から 255 の範囲の Fixnum である場合は
その 1 バイトを末尾に追加します。
self を返します。
と成功すればOK! が,俺の場合上記のようにうまく行かなかった…文字化けした…. 文字化けは下記のように修正して成功. 参考サイト : http://d.hatena.ne.jp/nagaton/20060914/1158247239
$ sudo vi /usr/local/ruby/lib/ruby/gems/1.8/gems/refe-0.8.0.3/lib/refe/searcher.rb
def adjust_encoding( str )
if shift_jis_platform?
NKF.nkf('-Es', str)
else
str
end
end
# の部分を下記のように修正
def adjust_encoding( str )
NKF.nkf('-w', str)
#if shift_jis_platform?
# NKF.nkf('-Es', str)
#else
# str
#end
end
おーよかったよかった….しかし,この refe って Rubyシェル内で使えないじゃんか! ということで,さらに .irbrc に下記を追記. 参考サイト : http://d.hatena.ne.jp/secondlife/20051114/1131894899
# 補完を有効
require 'irb/completion'
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
では,早速..
$ irb
>> Array.r :inspect
Array < Object#inspect
--- inspect
オブジェクトを人間が読める形式に変換した文字列を返します。
組み込み関数 p は、このメソッドの結果を使用して
オブジェクトを表示します。
=> nil
出来たみたい!
でも…,これってRubyのリファレンスから引っ張ってきているだけなので….Pythonのhelp関数とは違う….
もちろん,Railsのコンソール起動(./script/console)でRailsのモデルのリファレンスがひけるわけがない…. ん~Railsではないのかなぁ~. Pythonのhelpって便利なんだよなぁ~.
Comments