mieki256's diary



2016/05/07() [n年前の日記]

#1 [ruby] Rubyのirbが時々固まる問題

Windows7 x64 (or Windows10 x64) + Ruby ruby 2.2.4 p230 mingw32版で、irb や pry を使うと、固まるというかフリーズする件。readline がダメダメだからそうなるのだ、てな話を今頃知った。

_Windows7 64bitにおけるirbを速くする。 - DUMMY remonbonbon's weblog
_irbの入力が遅いときはreadlineをオフにしてみては? - Survive in Net.
_Windows7 64bitでirb.batが異常に重い時 - komorebikoboshiのブログ
_RailsInstaller付属のRubyのirbが妙に重い件
_Ruby 1.9以降のirbでBackspaceで表示が崩れる - 色々日記(ざ・めも)

readline を使わないようにすることもできるらしい。 試してみたら、たしかに固まることはなくなった、けれど、今度はTABキーを押した時の補完や、上キーを押した時の履歴が使えなくなる。 *1 _library irb/completion (Ruby 2.2.0) によると、irb の補完処理をする irb/completion が、readline を使ってるそうで…。

このあたり、どうにかならんものか。あちらを立てれば、こちらが立たず。

readline.dllをインストールしてみたらどうなるだろう。 :

「irbを使う時は readline.dll をインストールせよ」みたいな話を見かけた。Ruby 1.9時代の話だから、現状でも有効な話なのか分からんけど。

_readlineモジュール - 追加ライブラリ - Rubyインストール
_WindowsにRuby1.9.1をインストールする − @IT

試しに、 _Index of /win32 から、readline-4.3-2-mingw32.zip をDLして解凍、binフォルダ内の readline.dll を、Rubyインストールフォルダ\bin にコピーしてみた。

む。もしかして、コレだと固まらない? 単に気のせい?

と思ったけど、pry は固まるな…。さらに、日本語入力もおかしく…。いや、これは readline.dll を入れなくても最初からおかしいみたい。

pry も readline を使っているのだろうと想像してるけど、実際はどうなんだろう。

rb-readlineなるライブラリがあるらしい。 :

readline.dll はC言語で書かれてるらしいけど、それをRubyだけで書き直した rb-readline なるライブラリだかモジュールだかがあるようで。Rubyで書かれてるから処理は遅いだろうけど、Rubyさえ動く環境なら readline が動くはず、てなあたりがメリットなのかなと。

_Big Sky :: rb-readlineを試験するスクリプト書いた。

gem install rb-readline でインストールしてみた。readline.rb というファイルがインストールされるので、おそらくコレが呼び出されるのではないか…。たぶん。

使ってみたら、irb が固まりにくくなった、ような気がしたけど気のせいかもしれない。本当に使われてるのかちょっと自信が無い。キー入力した時の反応が遅くなった感じがするので、おそらく使われてそうな気もするのだけど。

ただ、日本語を入力すると恐ろしいことになる…。

rb-readline の作者さんは「多言語対応なんか知るかボケ」ってスタイルらしいので、rb-readline を導入したら、その後は英数字オンリーで使わないといかんらしいなと。

Linux上で試してみた。 :

VMware Player + Ubuntu Linux 上で irb を動かしてみた。

固まることもないし、補完も利くし、日本語入力もOK。…チッ。Rubyはこれだから。なんちてぽっくん。

やはりRubyは、基本的には*NIX文化圏の道具なんだなと再認識。もっとも、GIMP や Inkscape もそうだけど、*NIX文化圏のアレコレをWindows上でそこそこ動くようにしてくれているだけでも、かなり御の字なのですが。

そういえば、Windows10上でbashが動くという話があったっけ。その場合、irb というか readline は、どんな結果になるのだろう。

*1: 履歴は、数文字打ってから上キーを押すと出てくるようではある。

以上です。

過去ログ表示

Prev - 2016/05 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project