railsでbin/devしたら突然以下のようなエラーが出て動かなくなった。 おそらく、この前brew upgradeが何かの拍子に走って、パッケージが更新されたせいだろう。

11:19:44 web.1  | /Users/zoh/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require': dlopen(/Users/zoh/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/pg-1.4.4/lib/pg_ext.bundle, 0x0009): Library not loaded: /opt/homebrew/opt/postgresql/lib/libpq.5.dylib (LoadError)
11:19:44 web.1  |   Referenced from: /Users/zoh/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/pg-1.4.4/lib/pg_ext.bundle
11:19:44 web.1  |   Reason: tried: '/opt/homebrew/opt/postgresql/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file), '/opt/homebrew/Cellar/postgresql@14/14.6/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file) - /Users/zoh/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/pg-1.4.4/lib/pg_ext.bundle

こちらの記事では、シンボリックリンクの作成や、railsの再インストールで対応されてた。

ただ、特定のgemの対処のみでよければ以下の方法でもよさそう。

今回はpgというgemが現状のローカル環境と一致していないビルドになっていることが原因かなと思うのでgemを一度消して、入れ直せばOK

bundle exec gem uninstall pqでgemを一旦消して、再びbundle installを実行します。

自分の場合、バージョンが二つインストールされていたみたいなので、両方削除。 (3を選んだ。)

$ bundle exec gem uninstall pg

Select gem to uninstall:
 1. pg-1.4.3
 2. pg-1.4.4
 3. All versions
> 3
Successfully uninstalled pg-1.4.3
Successfully uninstalled pg-1.4.4

$ bundle install # これで消したgemが再構築される。

bin/devで無事再起動できました。

この記事の環境情報

  • Ruby 3.1.2
  • rails 7.0.4
  • postgres (PostgreSQL) 14.6 (Homebrew)
  • 眠気30%