[Ruby] readline に対して Library not loaded とエラーが発生する場合の対処

readline の LoadError が発生しています。

症状

例えば pry を実行すると、下記のエラーが表示されます。

% pry
Sorry, you can't use Pry without Readline or a compatible library.
Possible solutions:
 * Rebuild Ruby with Readline support using `--with-readline`
 * Use the rb-readline gem, which is a pure-Ruby port of Readline
 * Use the pry-coolline gem, a pure-ruby alternative to Readline
/Users/****/.rbenv/versions/2.4.5/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': dlopen(/Users/****/.rbenv/versions/2.4.5/lib/ruby/2.4.0/x86_64-darwin18/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

対処

今回は直前に実行した brew upgrade readline が原因と考えられるので、ruby をインストールし直します。

rbenv, ruby-build のバージョンがあがっていることを念のため確認しておきます。

% brew update
% brew doctor
% brew upgrade rbenv ruby-build

現在利用している ruby のバージョンとインストール可能なバージョンを調査します。

% ruby -v
% rbenv install -l | grep -E "^  2"

該当するバージョンをインストールし直します。

% rbenv uninstall 2.4.5
% RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl) --with-iconv-dir=$(brew --prefix libiconv)" rbenv install 2.4.5

設定、リハッシュ、確認をしておきます。

% rbenv global 2.4.5
% rbenv rehash
% rbenv versions

補遺