PostgreSQLのバージョンを上げたらRails consoleが開かなくなった時の対処メモ
色々アップデートしてたらRails consoleが開かなくなり対処したのでそのメモです。
>bin/rails c (Traceback省略) /Users/(ユーザー名)/.rvm/gems/ruby-2.5.1/gems/bootsnap-1.4.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require': dlopen(/Users/(ユーザー名)/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/x86_64-darwin16/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError) Referenced from: /Users/(ユーザー名)/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/x86_64-darwin16/readline.bundle Reason: image not found - /Users/(ユーザー名)/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/x86_64-darwin16/readline.bundle
エラーをみると/usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
あたりが怪しそうなのでググってみると出てきたのが以下↓
github.com (即効でRailsのissueじゃねぇ!ってクローズされてて吹いたw)
リンク先だといくつか対処法が書いてあるので整理します。 結論としては1が良いのかなと思います。
0. 開発環境
- macOS sierra (10.12.6)
- Rails 5.2.2
- Ruby 2.5.1 (rbenv)
1. シンボリックリンクを作成する(し直す?)
2019/3/2時点だとこれでいけました。
ln -s /usr/local/opt/readline/lib/libreadline.8.0.dylib /usr/loc al/opt/readline/lib/libreadline.7.dylib
下記記事とHomebrewのサイトを見てみると、 最近PostgreSQLのバージョンを上げた影響でreadlineのバージョンも上がったため、
(原因)readline 7
を読みに行ったが対象がない
↓
(事象)LoadError
↓
(対処)元の呼び出しでもreadline 8.0
を呼び出せるようにシンボリックリンクを作成する。
という流れになったのだと予想。
ちなみにシンボリックリンクとは?
ln -s hoge fuga
の意味について
http://www.turbolinux.co.jp/products/server/10s/manual/command_guide/command_guide/ln.html
2. rb-readlin gemを入れる
これでも一応動くようになりましたが、最近メンテされてないし。。
3. rbenv (またはrvm) を入れ直す
今回は試してないが、入れ直す時にリンクが作成されるのでは?と予想
まとめ
他にもバージョン上げた時に応用効きそう