RubyアプリケーションからPostgreSQLデータベースにアクセスする方法

2024-04-02

Ubuntu に PostgreSQL の pg ジェムをインストールする方法

前提条件

  • Ubuntu 18.04 または 20.04
  • Ruby 2.5 以降
  • PostgreSQL 10 以降

手順

PostgreSQL サーバーのインストール

sudo apt install postgresql-server-dev-all

pg ジェムのインストール

gem install pg

PostgreSQL クライアントのインストール

sudo apt install postgresql-client

PostgreSQL データベースの作成

psql -c "CREATE DATABASE my_database;"

PostgreSQL ユーザーの作成

psql -c "CREATE USER my_user WITH PASSWORD 'my_password';"

PostgreSQL ユーザーに権限の付与

psql -c "GRANT ALL PRIVILEGES ON DATABASE my_database TO my_user;"

テスト

psql -U my_user -W my_database

上記のコマンドを実行すると、PostgreSQL データベースに接続できるはずです。

トラブルシューティング

エラー: pg_config が見つかりません

export PATH=$PATH:/usr/lib/postgresql/10/bin

上記のコマンドを実行して、pg_config コマンドが使えるようにします。

エラー: libpq.so が見つかりません

sudo apt install libpq-dev

上記のコマンドを実行して、libpq.so ライブラリをインストールします。

補足

  • このチュートリアルでは、PostgreSQL 10 を使用していますが、他のバージョンでも同様の手順でインストールできます。
  • Ruby のバージョンによっては、pg ジェムのバージョンを指定する必要がある場合があります。




# Gemfile

gem 'pg'

# ファイル: db/connection.rb

require 'pg'

# PostgreSQL データベースへの接続
connection = PG.connect(
  host: 'localhost',
  port: 5432,
  dbname: 'my_database',
  user: 'my_user',
  password: 'my_password'
)

# クエリの実行
results = connection.exec('SELECT * FROM users')

# 結果の処理
results.each do |row|
  puts row['name']
end

# 接続の切断
connection.close



PostgreSQL の pg ジェムをインストールする他の方法

ここでは、その他の方法を紹介します。

ソースコードからのインストール

git clone https://github.com/postgres/pg.git
cd pg
gem build pg.gemspec
sudo gem install pg.gem

この方法は、最新バージョンの pg ジェムをインストールしたい場合に便利です。

RVM を使用してインストール

RVM を使用している場合は、以下のコマンドを実行して pg ジェムをインストールできます。

rvm install pg

Bundler を使用している場合は、Gemfile に gem 'pg' を追加し、bundle install コマンドを実行して pg ジェムをインストールできます。

Docker を使用している場合は、PostgreSQL と pg ジェムを含むイメージを pull して実行できます。

docker pull postgres
docker run -it postgres psql -U postgres
  • 最も簡単な方法は、上記の「手順」で説明されている方法です。
  • 最新バージョンの pg ジェムをインストールしたい場合は、ソースコードからのインストール方法を選択してください。
  • RVM または Bundler を使用している場合は、それぞれのツールを使用してインストールするのが便利です。
  • Docker を使用している場合は、Docker イメージを使用してインストールするのが便利です。


ruby postgresql pg


PostgreSQL INSERT文にUUIDを生成する3つの方法(uuidgenコマンド、uuid_generate_v4()関数、DEFAULT制約)

gen_random_uuid()関数を使うPostgreSQL 8.4以降では、pgcryptoモジュールに含まれるgen_random_uuid()関数を用いて、バージョン4のUUIDを生成できます。この関数は、ランダムに生成されたUUIDを返します。...


PostgreSQL: INSERT INTO ... SELECT ...で別のテーブルからデータを挿入

方法1:INSERT INTO文を複数回実行するこの方法はシンプルですが、レコード数が多い場合、実行に時間がかかってしまうことがあります。方法2:VALUES句に複数のレコードを指定するVALUES句に複数のレコードをカンマ区切りで指定することで、一度に複数のレコードを挿入することができます。...


PostgreSQLの除算演算子「/」で悩んだら?解決策と代替手段を解説

誤ったデータ型:除算されるいずれかのオペランドが整数型でない場合、誤った結果が生じる可能性があります。例えば、10 / '5' は 2 となりますが、これは本来の意図ではない可能性があります。このような場合は、適切なデータ型変換が必要となります。...


その他の方法:CTEを超えた、SQLで複数クエリを連結するテクニック

SQLにおける共通表式 (CTE) は、複雑なクエリをより小さな、理解しやすい部分クエリに分割するための便利な機能です。複数のCTEを1つのSQLクエリで使用することで、複雑なデータ操作をより効率的に実行することができます。CTEの構文CTEは、WITHキーワードを使用して定義されます。CTEの構文は以下の通りです。...


文字列リテラルにおける改行表現

プログラミングにおいて、改行はテキストデータを区切る重要な役割を果たします。データベースシステムであるPostgreSQLでも、改行文字は文字列データの格納や処理において重要な役割を果たします。本記事では、PostgreSQLにおける改行文字の扱いについて、以下の3つの観点から分かりやすく解説します。...


SQL SQL SQL Amazon で見る



MacでPostgreSQLデータベースに接続できない?Railsで発生する「An error occurred while installing pg (0.17.1)」エラーを徹底解説

PostgreSQL開発用パッケージの不足PostgreSQLのネイティブ拡張機能をビルドするには、開発用パッケージが必要です。macOSの場合は、Homebrewを使用してインストールできます。pg gemのバージョン互換性の問題Bundlerで指定されているpg gemのバージョンが、インストールされているPostgreSQLのバージョンと互換性がない可能性があります。この場合は、以下のいずれかの方法で解決できます。