Help us understand the problem. What is going on with this article?

Rails consoleがreadlineの原因でうまく読み込めなかった

環境

・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 Errorreadline.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にすることで動きました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away