55
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

brew upgrade後のrails sエラー(postgresql@14)

Last updated at Posted at 2022-09-02

概要

Macにてbrew upgrageコマンドを実行時に、
postgresqlバージョンアップ(14.3 ➡︎ 14.5)が自動で実施された。
その後、rails sコマンドにてエラーが発生。
その解消方法について、備忘録として残す。

環境

もろもろ バージョン
Mac 12.5.1
(Monterey)
Ruby 3.0.1
Rails 6.1.6.1
Homebrew 3.5.10
PostgreSQL 14.3 ➡︎ 14.5
(アップデート)

発生したエラー

rails sコマンド実行

/Users/username/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require': dlopen(/Users/username/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/pg-1.4.3/lib/pg_ext.bundle, 0x0009): Library not loaded: '/opt/homebrew/opt/postgresql/lib/libpq.5.dylib' (LoadError)
  Referenced from: '/Users/username/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/pg-1.4.3/lib/pg_ext.bundle'
  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.5_1/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/username/.rbenv/versions/3.0.1/lib/ruby/gems/3.0.0/gems/pg-1.4.3/lib/pg_ext.bundle

エラー解消方法(結論)

下記コマンドにてシンボリックリンクを作成。

ln -s /opt/homebrew/opt/postgresql/lib/postgresql@14/libpq.5.dylib /opt/homebrew/opt/postgresql/lib/libpq.5.dylib


作成後にrails sコマンドで無事実行できた。

エラー原因の特定までの流れ

rails sエラー時の注目箇所

'/opt/homebrew/opt/postgresql/lib/libpq.5.dylib' (LoadError)

'/opt/homebrew/opt/postgresql/lib/libpq.5.dylib' (no such file)
あたり

私「どうやらlibpq.5.dylibというファイルが見当たらないことで読み込めないっぽいなぁ」

下記コマンドでファイルがあるかを確認しにいく。

ls -la /opt/homebrew/opt/postgresql/lib/


libpq.5.dylibというファイルは見当たらないが、
postgresql@14というディレクトリを発見。

postgresql@14のディレクトリ内を見ると、libpq.5.dylibのファイル発見!

どうやらディレクトリの階層構造が変化してしまったらしい。(赤字部分)
upgrade前:/opt/homebrew/opt/postgresql/lib/libpq.5.dylib
upgrade後:/opt/homebrew/opt/postgresql/lib/postgresql@14/libpq.5.dylib

シンボリックリンクを(下記コマンドで)作成して対応しよう。

ln -s 「シンボリックリンク元のパス」 「シンボリックリンクを作成する場所のパス」


最終的に実行したコマンド

ln -s /opt/homebrew/opt/postgresql/lib/postgresql@14/libpq.5.dylib /opt/homebrew/opt/postgresql/lib/libpq.5.dylib

補足

上記解決に至る前に試したこと
ターミナルにて
brew services restart postgresql@14(PostgreSQLの再起動)
brew uninstall --force postgresql@14 (PostgreSQLのアンインストール)
brew install postgresql@14(PostgreSQLの再インストール)

railsのGemfile&ターミナルにて
gem 'pg'の行をコメントアウトしてbundle update
gem 'pg'の行をアンコメント(コメントアウト解除)してbundle install

上記では改善に至らず。。。

no such file」というエラー文言を受けて、素直にディレクトリやファイルの場所を確認しにいくべきだったと反省。。。

参考にさせていただいた記事

追記(2022/10/07)

上記シンボリックリンクでの対処について、
PostgreSQLのアップデートが再度実行されると、
シンボリックリンクが消えてしまい、
同一のエラーが出てしまいます。

シンボリックリンクの貼り直しでも対処できますが、
根本解決のために下記手順を実行したので、
記録として残します。

手順

  1. rbenvアンイントール
  2. .rbenvディレクトリの削除
  3. rbenvインストール
  4. rubyインストール
  5. rubyバージョン固定
  6. rails(Gem)インストール
  7. (railsアプリフォルダにて)Gem入れ直し
  8. 解決!(rails s成功!)

実際のコマンド

brew uninstall rbenv  # rbenvアンインストール
rm -rf /Users/username/.rbenv  # .rbenvディレクトリ削除
brew install rbenv  # rbenvインストール
rbenv install 3.0.1  # rubyインストール(※必要なバージョンを指定)
rbenv global 3.0.1  # rubyバージョン固定
gem install rails -v 6.1.6  # railsインストール(※必要なバージョンを指定)
bundle install  # (railsアプリフォルダにて)Gem入れ直し
rails s  # 無事起動成功、やったー!

※.rbenvディレクトリの削除により、
各種Gemが削除されるので、
必要に応じて、入れ直しが必要です。
ご注意ください。

55
22
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?