読者です 読者をやめる 読者になる 読者になる

すがブロ

sugamasaoのhatenablogだよ

irb を快適に使うための Tips

イベント ruby

このエントリは

Ruby Advent Calendar jp: 2009 : ATNDの7日目のエントリです。
上記のページに書いてあるとおり、12月中に1日から25日まで一つずつ Tips を書いていこう!という企画で、その7日目がぼくの担当となっています。

ここからが本題

みなさん irb は使っていると思われますけど

irb に限らず、インタラクティブなインターフェイスがあると「ちょっとこの動作を確認したい」という時に重宝しますよね。

いきなり余談ですが

今仕事で Flex を使っているのですが irb に慣れきった体ではちょっとした動作確認などが非常に億劫で億劫で、irbのありがたみを痛感しているところです。

というわけで irb の設定ファイルを書いて快適になろう!

前提知識

設定はHOME の .irbrc に設定を書くと irb 起動時に読み込んでくれます。
例えば Linux や Mac では ~/.irbrc に書けば良いです。ここらへんは .vimrc などと一緒なのでおなじみですね。
では Windows では? %USERPROFILE% のあるディレクトリに .irbrc ファイルを置けば良いです。
%USERPROFILE% は、ふつーに使ってれば c:\Documents and Settings\ユーザ名 になります。
ちなみに、 .irbrc は Windows だと直接名前をつけられないので、 move hoge.irbrc .irbrc のように、コマンドプロンプトからファイル名を変更してあげる必要があります。

コンフィギュレーション
irb 起動時に ~/.irbrc を読み込みます. もし存在しない場合は, カレントディレクトリの .irbrc, irb.rc , _irbrc, $irbrc の load を順に試みます.

Ruby Reference Manual - るりま

(本当は新マニュアルの方を指したかったけど、見つからなかった。。。)
には、 .irbrc じゃなくても良いよ! と書いてありますが、それ以外はすべて読み込んでくれなかったので、多分この情報が古いのでしょう。。。

じゃあ、どんな設定してるのさ

全然たいしたことは書いてないんですけどねw

#require 'irb/completion'
require 'pp'
require 'rubygems'
require 'wirble'

# 沢山記憶するよ
IRB.conf[:SAVE_HISTORY] = 100000

Wirble.init
Wirble.colorize

こんな感じ。

具体的に解説すると

require 'irb/completion'(コメントアウトだけど)

これは require 'wrible' を使うまでは有効にしていた行で、有効にしておくと、 TAB による補完が有効になります。
例えば

>> 123.to_ # ここでTAB
123.to_a                123.to_i                123.to_s                123.to_yaml_properties
123.to_enum             123.to_int              123.to_sym              123.to_yaml_style
123.to_f                123.to_r                123.to_yaml  

のような感じです。

あと、よく使うライブラリのロード

pp のように常用しそうだけど require しないと使えないようなライブラリはここで読み込んでおくと良いでしょう。
あと、なぜか Mac になってから NKF は require しなくても使えるようになったので削除しましたが、Windows で 1.8系の場合は有効にしておいた方が何かと便利かも。

require 'wirble'

rubygems でインストールしたライブラリです。
このライブラリで、colorize*1 を使うと、irbの実行結果に色がついて楽しい感じになります。

Pablotron: Wirbleにある本家のサイトの、 を見るといろいろな設定や、カラーテーマの変更方法とかがあるので、気にくわない人は変更すると良いかも。
ちなみに、Winodws だと colorize がとても残念なことになる。コマンドプロントでは制御コードによる色の変更ができなくて、制御コードがそのまま標準出力に流れてきてしまう><
対応方法がありました。下記の追記を読んでね。

追記 12/07

コメント欄で yhara さんから Windows でも colorize できる方法を教えていただきました!!
gem install win32console で win32console ライブラリをインストール後、 .irbrc に

require 'rubygems'
require 'win32console'

としておけば、Wirble.colorize が Windows でも有効になります!素晴らしい!!!

IRB.conf

これは irb 標準でついている機能で、ヒストリーサイズを大きくしたりできます。
この IRB.conf の記述方法は上記のリファレンスにも書いてあるので、参考にすると良いでしょう。
IRB.conf[:SAVE_HISTORY] = 100000 とすることで、ヒストリーファイルも有効になり、一度 irb を終了しても .irb_history に記録がのこっていて、再度起動したときに上キーを押せば履歴が残るようになってます。
ちなみに、Wirble もここの値を見ているようなので Wirble を使う人は、 Wirble.init の前に設定を書いておいた方が良いかも。

まとめると

  • よく使うライブラリは requier しておくと良いよ
  • Wirble 入れると色付きや補完機能が有効になるよ
  • でも Windows では色がつかないよ(追記に記載したとおり、win32console を入れると色が付きます!)
  • 色の表示意外に目当てがなければ、Wirble は必要ないよ
  • 補完と履歴は require 'irb/completion' と IRB.conf[:SAVE_HISTORY] = 100000 で十分だよ

という感じですかね。
あまり凝った設定をしているわけではないですけど、よく使う分、ちょっとした事で快適になれる好例だと思います。
みなさんのオススメの設定とかあれば教えて下しあ!><

最後に

素敵な企画をしてくださった @yhara さんありがとうございます!

*1:Wirble.init のあとに Wirble.colorize を使ってね