環境
・macOS Mojave(10.14.3)
・Ruby 2.6.0
・Rails 5.2.2
ふとある日、rails consoleからエラーが返されるようになった。
$ rails console
・
・
・
dlopen(/Users/user/.rbenv/versions/2.6.0/lib/ruby/2.6.0/x86_64-darwin18/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
Referenced from: /Users/user/.rbenv/versions/2.6.0/lib/ruby/2.6.0/x86_64-darwin18/readline.bundle
Reason: image not found - /Users/user/.rbenv/versions/2.6.0/lib/ruby/2.6.0/x86_64-darwin18/readline.bundle
とりあえずざっとバックトレースを読んでいく。
Load Errorとreadline.bundle
臭いますね、正常に読み込めてない様子。
別機Ubuntu18.04にクローンして動かしてみましたが問題なく動きましたので、
問題があるのはこのマシンだと思いました。
Google先生に聞いてみましたが出てくるのはgem 'rb-readline'
をGemfileに追記してbundle install
するようにといった記事が・・・。
このマシンの問題なのでGemfileに追記する方法はとりあえずパスすることに。
原因と解決方法
Homebrewにインストールされていたreadlineが更新されたことが原因でした。
$ brew info readline
readline: stable 8.0.0 (bottled) [keg-only]
Library for command-line editing
/usr/local/Cellar/readline/7.0.5 (46 files, 1.5MB)
Poured from bottle on 2018-08-12 at 14:38:05
/usr/local/Cellar/readline/8.0.0 (48 files, 1.5MB)
Poured from bottle on 2019-01-31 at 01:03:39
・
・
・
以前のバージョンにロールバックをします
$ brew switch readline 7.0.5
Cleaning /usr/local/Cellar/readline/8.0.0
Cleaning /usr/local/Cellar/readline/7.0.5
Opt link created for /usr/local/Cellar/readline/7.0.5
無事動くように。
$ rails c
Loading development environment (Rails 5.2.2)
irb(main):001:0>
原因の発端はHomebrewのパッケージをごっそり更新したことでした。😔
追記)
Ruby 2.6.0ではreadline8.0.0が動かず、
Ruby 2.6.1にすることで動きました。