ページ内ナビ
概要
pgはRubyからPostgreSQLのlibpqへ接続するnative extensionです。query/result APIに加え、text/binary type map、COPY、prepared/parameterized query、Fiber scheduler対応などを提供し、Rails/ActiveRecordを含むRuby applicationのPostgreSQL接続基盤として使われます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
PG::ConnectionとPG::ResultでPostgreSQL queryを扱う
connection、parameterized query、result iterationなどPostgreSQL clientの基本APIをRubyから利用できます。PostgreSQL 10以降をsupport対象としています。
text/binary type mapとCOPYでdata conversionを制御する
Integer、timestamp、JSON/JSONB、array、record等のencoder/decoderと複数のTypeMapを組み合わせ、query parameter・result・COPYのRuby型変換をcustomizeできます。
出典:[1]
Fiber.schedulerとnonblocking libpq interfaceを利用する
pgは内部でlibpqのnonblocking connection modeを使い、RubyのFiber schedulerが登録されている場合はblocking I/Oをschedulerへ渡せるよう設計されています。
出典:[1]
向いている用途
Ruby/Rails applicationでPostgreSQL clientを直接またはORM経由で使う場合に向く
RubyからPostgreSQLへ低level accessしたい場合だけでなく、ActiveRecord等のconnection poolの下位driverとして利用する用途にも適します。
出典:[1]
導入前の確認
v1.7.0はRuby 3.1未満をsupportしない
1.7.0ではRuby 2.7/3.0 compatibilityが削除され、gemspecはRuby 3.1以上を要求します。binary gemはlibpqを内包しますが、source gemではlibpq headers等が必要です。
参考にした公式資料
- [1]pg v1.7.0 README(2026-10-04)
- [2]pg v1.7.0 changelog(2026-10-04)
- [3]pg v1.7.0 gemspec(2026-10-04)
- [4]pg BSD 2-Clause license(2026-10-04)
編集部からの補足
1.7.0はRuby 3.1未満をsupportしません。binary gemはlibpqを内包しますが、source gemはlibpq headers等が必要です。同一PG objectの複数thread/fiber同時操作も避けてください。
3ステップで試す
- 1
pg 1.7.0用のisolated Bundler projectを作る
Ruby 3.1+環境でpgをversion固定します。
mkdir -p ruby-pg-demo && printf 'source "https://rubygems.org"\ngem "pg", "1.7.0"\n' > ruby-pg-demo/Gemfile - 2
pg gemをinstallする
対応platformではbinary gemが選ばれ、source gemの場合はlibpq headers等が必要です。
cd ruby-pg-demo && bundle install - 3
DB接続せずpgとlibpq versionを確認する
PostgreSQL serverへ接続せず、loaded gemとbundled/system libpqのversionだけを確認します。
cd ruby-pg-demo && bundle exec ruby -rpg -e 'puts "pg=#{PG::VERSION}"; puts "libpq=#{PG.library_version}"'
成長
成長の推移 · 直近30日
869 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 28
- Open PR
- 6
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
カテゴリ
GitHubデータ
GitHubのデータGitHubの詳細データを見る
GitHub Topics
- ruby
- database
- postgresql
- rdbms
- client
- c
- Stars
- 869
- Forks
- 200
- Watchers
- 28
- Open Issues
- 10
- Contributors
- 61
- 所有者種別
- User
- 主要言語
- C
- ライセンス
- BSD-2-Clause
- リポジトリ最終更新
- 2026/10/02
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- DBeaver51,949 Stars
共通タグ 1件 · 共通カテゴリ 1件
多数のdatabaseを一つのdesktop SQL workspaceから操作する
Java - DuckDB41,889 Stars
共通タグ 1件 · 共通カテゴリ 1件
CSV・Parquet・DataFrameをserverなしで直接SQL分析し、application processへ埋め込めるOLAP engine
C++ - Directus38,015 Stars
共通タグ 1件 · 共通カテゴリ 1件
SQL DatabaseにAPI・Visual Studio・AI/MCPを重ねてData App化する
TypeScript - MongoDB28,614 Stars
共通タグ 1件 · 共通カテゴリ 1件
document dataとshardingを扱うdatabase server
C++ - Turso Database24,557 Stars
共通タグ 1件 · 共通カテゴリ 1件
SQLite互換のSQLをRust製エンジンで実行し、複数言語から組み込めるデータベース
Rust - Neon23,170 Stars
共通タグ 1件 · 共通カテゴリ 1件
PostgreSQLのcomputeとstorageを分離し、branchingとelastic computeを実現する
Rust
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。