環境
- macOS 10.13.6
- Ruby 2.5.3
現象
irb
で矢印キーを押すと、次のような記号が現れてしまうようになってしまいました。
たとえば、文字を修正しようと←キーを押すと…
こうなってしまいます。
原因
調べてみると、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
とリネームすることで、無事に解決しました。