概要
$ rails new アプリ名 --database=postgresql
や
$ bundle install
などを実行した際にタイトルのエラー文に遭遇しました。
エラー文からわかる通り、「Railsのposgresql用のgemをインストールしている最中にエラーが発生しました」ということだとは思うのですが、ネット記事などで似たようなケースがあまりなく、類似の記事でも原因が自分のケースと全然違うようだったのであまり参考にならなそうですが自分のケースを備忘録的に書いてみました。
やったこと
$ brew services list
で
mysql none
postgresql@14 started
と表示されていたので、動いている状態でした。
最初から確認してみた
pg_config --version などのコマンドを実行して、PostgreSQLがインストールされているかを確認します。
$ pg_config --version
=> PostgreSQL 14.11(Homebrew)
でhomebrew経由で入れたpostgreSQLがしっかり入っていました。
$ which psql
=> /opt/homebrew/bin/psql
これはpsqlなどのDB操作をするときのコマンドの実行パスが表示されるようで
$ pg_config --bindir
=>/opt/homebrew/Cellar/postgresql@14/14.11_1/bin
こちらはPostgreSQLのbinディレクトリのパスを表示するようです。分かれてるっぽい?
調べるとgemでpgを入れるときに指定しなければいけないのはbinディレクトリのパスの方で
$ bundle config build.pg --with-pg-config=<pg_configのパス>
のようにすると上手くいきました!
まとめ
正直なぜこのような必要があったのかがいまいちわかっておらず、ただの備忘録的な感じになってしまいました。
またネットに似たような記事があまりなく、自分自身特に変わったことをした覚えはないのですが、
結果的にgemに意図的にpostgresqlのパスを指定しないといけない状況だったみたいです。