LoginSignup
12
2

More than 5 years have passed since last update.

[Ruby] irbで、矢印キーを押すと`^[[D`などと出てしまう現象の解決法

Posted at

環境

  • macOS 10.13.6
  • Ruby 2.5.3

現象

irbで矢印キーを押すと、次のような記号が現れてしまうようになってしまいました。
たとえば、文字を修正しようと←キーを押すと…
strange_symbol.png
こうなってしまいます。

原因

調べてみると、irbではreadlineというライブラリを使用していることが分かりました。
しかし、require "readline"を叩いてみても

irb(main):001:0> require "readline"
Traceback (most recent call last):
        4: from /Users/<username>/.rbenv/versions/2.5.3/bin/irb:11:in `<main>'
        3: from (irb):1
        2: from /Users/<username>/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
        1: from /Users/<username>/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
LoadError (dlopen(/Users/<username>/.rbenv/versions/2.5.3/lib/ruby/2.5.0/x86_64-darwin17/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib)
  Referenced from: /Users/<username>/.rbenv/versions/2.5.3/lib/ruby/2.5.0/x86_64-darwin17/readline.bundle
  Reason: image not found - /Users/<username>/.rbenv/versions/2.5.3/lib/ruby/2.5.0/x86_64-darwin17/readline.bundle

…となってしまいます。どうやらreadlineはネイティブなライブラリで、本体のバージョンが変わってしまったために、読み込めないようです。

対処法

/usr/local/opt/readline/lib/libreadline.7.dylibがないとのことなので、当該フォルダを見てみると、libreadline.8.dylibというエイリアスがありました。
これを複製し、libreadline.7.dylibとリネームすることで、無事に解決しました。
libreadline7.png

12
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
2