irbを便利につかうために for windows

Route 477(2007-08-01)
↑こちらを参考に、まずは

プログラミング言語 Ruby リファレンスマニュアル
↑completion機能をwindowsirb起動時に使えるようにしましょう。

irb実行中に(TAB)を押すとコンプレーション(入力補完)してくれる機能ですね。


まず、irbについて

こちらを見る。
プログラミング言語 Ruby リファレンスマニュアル


最初に、結論

windowsirb は .irbrc の場所を知らないようなので、指定します。

C:\>irb
irb(main):001:0> IRB.conf[:IRB_RC] = "c:\.irbrc"
=> "c:.irbrc"

それで、 c:\.irbrc というファイルを作り、設定します。

  • c:\.irbrc
require "irb/completion"

これで irb 起動時に入力補完機能が使えるようになります。
あとは、いろいろ追加していけばおkですね。

※.irbrcの場所はご自由にどうぞ。




ということで、以下は試行錯誤の過程を観たい方はどうぞ。




windows の .irbrc はどこだ?

Route 477(2007-08-01)
こちらにホームディレクトリは、

ruby -e 'p ENV["HOME"]'で出てくるディレクト

と書いていあるのですが、windowsで行うと、

C:\>ruby -e 'print ENV["HOME"]'
nil

nil なんです。。


[Ruby] irbにおける文字化け -Rubyを勉強を始めようと思いまして、Acti- その他(プログラミング・Web制作) | 教えて!goo
↑こちらに

.irbrc の置き場所などはマニュアルを参照してください。

Rubyリファレンスマニュアル - irb
http://www.ruby-lang.org/ja/man/?cmd=view;name=irb​

~ というのはUnixで使われるシェルで用いられる、ユーザーの
ホームディレクトリを表すものです。
Windows版であれば、環境変数 HOMEの値が用いられます。

~/.irbrc

%HOME%/.irbrc

のように読み替えてください。
この環境変数は通常は設定されませんので、ご自分の環境に合わせて
設定してください
(HOMEDRIVEとHOMEPATHならあらかじめ設定されていると思います)。

と書いてありますので、

C:\>ruby -e 'print ENV["HOMEPATH"]'
\Documents and Settings\福重伸太朗
C:\>ruby -e 'print ENV["USERPROFILE"]'
C:\Documents and Settings\福重伸太朗

らしい。


windows の .irbrc は読み込まれているのか?

irb起動時に .irbrc は読み込まれているのでしょうか?

C:\>irb
irb(main):001:0> conf.rc
=> true

読みこまれているらしい。

では、

\Documents and Settings\福重伸太朗\.irbrc
があるのでしょうか・・・・・・・ない・・・・・。

ないのに、読み込まれているのでしょうか・・・。


とりあえず、

C:\Documents and Settings\福重伸太朗\.irbrc

というファイルを作り、中に

require "irb/completion"

を書いて irb を起動して、入力補完機能が使えるかやってみましたが、できませんでした・・・。

もちろん、irb起動中に

require "irb/completion"

すれば入力補完機能は使えるようになります。


うーん。windowsの .irbrc はどこにあるのでしょうか・・・。


IRB.conf[:IRB_RC] で .irbrc の場所をしいする

どうやら、.irbrc の場所を irb が知らないようです。なので、指定しましょう。

プログラミング言語 Ruby リファレンスマニュアル

こちらに、
IRB.conf[:IRB_RC]
というオプションがあります。
デフォルトでは nil っぽいです。

なので、

irb(main):004:0> IRB.conf[:IRB_RC] = "c:\.irbrc"
=> "c:.irbrc"

上記のように .irbrc の場所を指定して、

c:\.irbrc というファイルを作ります。

  • c:\.irbrc
require "irb/completion"


それで、再度トライ。

C:\>irb
irb(main):001:0> a = []
=> []
irb(main):002:0> a.in
a.include?                    a.instance_eval
a.index                       a.instance_of?
a.indexes                     a.instance_variable_defined?
a.indices                     a.instance_variable_get
a.inject                      a.instance_variable_set
a.insert                      a.instance_variables
a.inspect
irb(main):002:0> a.in

おおおおおぉ。入力補完機能が効くようになりました!
一件落着。


環境

C:\>ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]