LoginSignup
9
9

ローカル環境でrails newする際に -d postgresql オプションでエラーが出る際の対処法 & PostgreSQLのインストール【Rails 7, Mac OS】

Last updated at Posted at 2023-11-19

PostgreSQLがインストールされていないために発生するエラー対処の記事となります。PostgreSQLの使い方の記事ではありませんので、ご了承くださいませ。

はじめに

Railsのハンズオンや環境構築資料でよく見かける以下の rails new コマンド。

$ rails new test_app -d postgresql

# --database=postgresql と読み替えていただいて問題ありません。

データベースオプションである、-d postgresql を指定することで、Railsと同時にPostgreSQLのセットアップをすることができます。※デフォルトはsqlite3が指定される。

しかし、ローカル環境にPostgreSQL自体をインストールしていない場合、pg gem(PostgreSQLのRubyライブラリ)のインストール中にエラーが発生する可能性がありますので、以下備忘録として、手順を残したいと思い記事にしてみました。

※ 現在プログラミングスクールに通っております。カリキュラムではDockerを使用しているため、ローカルでの環境構築の機会が少ないかつ慣れないエラーが多発しやすいため、少しでも参考になりましたら幸いです。

実行環境

  • Mac OS
  • Homebrew
  • Ruby 3.2.2
  • Ruby on Rails 7.0.8

PostgreSQLをインストールしていない状況での rails new

$ rails new test_app -d postgresql

エラー内容(一部抜粋):

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

...

checking for pg_config... no
checking for libpq per pkg-config... no
Using libpq from
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*****************************************************************************

Unable to find PostgreSQL client library.

Please install libpq or postgresql client package like so:
  brew install libpq

こちらは、PostgreSQLのクライアントライブラリ(libpq)が見つからないため、pg gemのインストールに失敗している旨のエラーとなります。libpqは、PostgreSQLへの接続等を行うために使用されるため、インストールをする必要がありますが、PostgreSQL自体のパッケージに含まれているため、PostgreSQLをインストールすれば自動的に利用可能になります。
以下、具体的な手順を記載します。

PostgreSQLのインストール

まず、Homebrewを使用して、ローカルにPostgreSQLをインストールします。

$ brew install postgresql

PostgreSQLのバージョンを確認します。

$ postgres --version

postgres (PostgreSQL) 14.10 (Homebrew)

PostgreSQLサービスの起動

PostgreSQLをインストール後、サービスを起動する必要があります。

$ brew services start postgresql

※ サービスを停止したい場合

$ brew services stop postgresql

Railsアプリケーションのセットアップ

PostgreSQLがインストールされ、サービスが起動していることを確認したら、再度 rails new コマンドを実行します。

$ rails new test_app -d postgresql

データベースの作成

Railsアプリケーションのセットアップが完了したら、次はRails内でデータベースを作成します。

$ rails db:create

Railsサーバーが立ち上がることを確認して、http://localhost:3000/ にアクセスする

$ rails s

以上となります。ありがとうございました。

PostgreSQLサービスを起動していない場合

サービスを起動していない場合は以下のようなエラーが出ます。

ActiveRecord::ConnectionNotEstablished
connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
Extracted source (around line #87):
              
            raise ActiveRecord::DatabaseConnectionError.hostname_error(conn_params[:hostname])
          else
            raise ActiveRecord::ConnectionNotEstablished, error.message
          end
        end
      end

サービスを起動することで解決します。

$ brew services start postgresql
9
9
0

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
9
9