irb と irbrc。補完や履歴

mixi日記からサルベージ。

補完の設定は最新 ActiveScriptRuby 1.8.6(111)(http://arton.hp.infoseek.co.jp/indexj.html参照) では最初から有効になってる。

irb-history (Windows) 2006年10月01日14:08

一昨日のやつ、Windows ではどうしたら良いのだろう。手元の ActiveScriptRuby_1.8.4.5 の irb の辺り (C:\Program Files\ruby-1.8\lib\ruby\1.8\irb\init.rb) を見ると、設定ファイルの場所を ENV["IRBRC"] に尋いてるみたい。
なので、環境変数 IRBRC に設定ファイルの場所を指定してやることにする。設定ファイルの内容は基本的に一昨日のもの。コメントのように順番を変え、ENV['HOME'] は、ENV['HOMEPATH'] に書き換えた。

irb-history 2006年09月29日16:18

irb の履歴が毎回クリアされるのはどうもと思って、なんかあった筈と調べてみる。.irbrc ファィルとかの設定は 1.9 からとのこと。手元の rubyDebian sarge で 1.8.2

IRB.conf[:SAVE_HISTORY] = nil (ruby 1.9 feature)
http://www2.ruby-lang.org/ja/man/?cmd=view;name=irb#a.a5.b3.a5.f3.a5.d5.a5.a3.a5.ae.a5.e5.a5.ec.a1.bc.a5.b7.a5.e7.a5.f3

そうすると irb-history.rb を使えば良いみたいだが探してもでて来ない。
しょうがないから自分で書いてみよう。~/.irbrc ファイル。

IRB.conf[:AUTO_INDENT] = true
IRB.conf[:EVAL_HISTORY] = 100
IRB.conf[:SAVE_HISTORY] = 1000 # ruby 1.9 feature
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb_history" # ruby 1.9 feature
require 'irb/completion'

class Object; def display_n(out=$stdout); out.puts to_s; nil; end; end
alias :x :exit

File.readlines(IRB.conf[:HISTORY_FILE]).each{
  |savedline| Readline::HISTORY << savedline.chomp }

at_exit do
  File.open(IRB.conf[:HISTORY_FILE], 'w') do |saveing|
    (-IRB.conf[:SAVE_HISTORY]..-1).each do |lineno|
      Readline::HISTORY[lineno].display_n(saveing) rescue next
    end # (-IRB.conf[:SAVE_HISTORY]..-1).each do |lineno|
  end # File.open(IRB.conf[:HISTORY_FILE], 'w') do |saveing|
end # at_exit do

hs9587 2006年09月29日 16:32
irb を複数立ち上げたときの事は考えていません。きっと悲しい事になるでしょう。

hs9587 2006年09月29日 23:56
保存側、at_extブロックの方からコーディングしてたから気が付かなかったけど、このままで は、初回 .irb?history が無いとその後もうまく行きませんね。
本当はちゃんと rescue Errno::ENOENT すべきなんだろうけど、irb の動作を試てみると、File.readlines のブロックを at_extブロックの後ろに書くようにすれば大丈夫でした。

hs9587 2006年09月30日 14:04
サブirb を使うとさらに悲しい気持ちになりますね。サブirb を途中終了するとなおさら。