hakeの日記

Windows環境でプログラミングの勉強をしています。

[es]でRubyを試す その2

irbが動かないのはRubyのTempfileクラスに問題があるということで、問題を回避する方法がこちらにありました! muscovyduckさんに感謝です。
ただしDOS窓Openでは動かないので、Power Toysからcmd.exeを持ってくる必要があります。スクリプトを修正してからcmd.exeからirbを起動するとconsoleというのが起動してirbが使用可能になりました(ちなみにcmd.exeで標準出力に出力するプログラムを実行するとconsoleに出力されて直ぐに閉じてしまいますね、この辺はDOS窓Openとの使い分けが必要ですか)
あとcmdとconsoleはTodayの「実行中のプログラム」で終了ができないみたいなのでタスク管理ソフトで終了させる必要があるみたいですね。

    • よくわかりませんがconsoleが直ぐ閉じてしまう場合もあるようです、この場合はタスクに残りません。この症状が出たときに一度リセットしたら回復しました。




以下、自分用スクリプト修正内容(丸ごとコピーです)

\lib\ruby\1.8\irb\locale.rb

    def real_load(path, priv)
     中略
    end

を以下に修正

    def real_load(path, priv)
      src = self.String(File.read(path))
      if priv
        eval("self", TOPLEVEL_BINDING).extend(Module.new {eval(src, nil, path)})
      else
        eval(src, TOPLEVEL_BINDING, path)
      end
    end

\lib\ruby\1.8\irb\workspace.rb

          require "tempfile"
          f = Tempfile.open("irb-binding")

を以下に修正

          f = File.open('/Temp/irb-binding', 'r+')