カクカクしかじか

技術的なアレコレ

brew updateの影響でreadlineに依存してるgemとtigが壊れた場合の解決法

発生エラー

brewで最新のmondodbをインストールするために brew update を行った後 rails console を実行したら今回のエラーが発生しました。

$ bundle exec rails c
/Users/shigeyukifukuda/.rbenv/versions/2.3.8/lib/ruby/2.3.0/irb/completion.rb:10:in `require': dlopen(/Users/shigeyukifukuda/.rbenv/versions/2.3.8/lib/ruby/2.3.0/x86_64-darwin17/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
  Referenced from: /Users/shigeyukifukuda/.rbenv/versions/2.3.8/lib/ruby/2.3.0/x86_64-darwin17/readline.bundle
  Reason: image not found - /Users/shigeyukifukuda/.rbenv/versions/2.3.8/lib/ruby/2.3.0/x86_64-darwin17/readline.bundle

readlineのバージョンを確認

8系が入っている模様。

$ brew info readline
readline: stable 8.0.0 (bottled) [keg-only]

解決法

readlineのバージョンが最新の8系だとtigや依存関係のあるgemが動かなくなるので7系を使うと良いみたいです。

$ brew switch readline 7.0.5
Cleaning /usr/local/Cellar/readline/8.0.0_1
Cleaning /usr/local/Cellar/readline/7.0.5
Opt link created for /usr/local/Cellar/readline/7.0.5

再びrails cしてみる

成功しました!

$ bundle exec rails c
Loading development environment (Rails 5.0.7.2)

参考リンク

blog.kozakana.net qiita.com