Ubuntu 9.10 / 10.04 で Ruby + PostgreSQL な環境を構築する

CGI としてもよく使われる Ruby と、DBMS として有名な PostgreSQL をインストールし、さらに Ruby から簡単に PostgreSQL を利用するための Ruby ライブラリ ruby-pg (ruby-postgres) をインストールする方法を記したメモです。

Ubuntu 10.04 の場合 (追記)

この記事はもともと Ubuntu 9.10 用に書いていましたが、Ubuntu 10.04 に関してもこの記事に書いてある方法で Ruby + PostgreSQL の環境が構築できることを確認しました。 それにあわせて記事のタイトルも変更しました。

追記

ruby-pg ではなく DBI / DBD-Pg を使用する方法についても別に記事を書きました。 DBI / DBD-Pg を使用した場合、PostgreSQL 以外の DBMS でも同じ API で操作できるというメリットがありますので、特に理由がなければ DBI / DBD-Pg を使用する方をおすすめします。

動作速度をちょっと計ってみたのですが、うちの環境では DBI / DBD-Pg を使うよりも ruby-pg を使ったほうが動作速度が速くなりました。 (DBI / DBD-Pg を使うと 400 ms ぐらいかかるところが、ruby-pg だと 160 ms 程度、というぐらいの差。) 動作速度の観点から言うと ruby-pg を使ったほうがよさそうです。

インストールするバージョン等

OS は、タイトルにも書いてあるように Ubuntu 9.10 (Karmic Koala) です。

RubyPostgreSQL はそれぞれ

をインストールします。 インストールには apt-get コマンドを使用します。 また、Ruby ライブラリ pg のインストールには RubyGems (Ruby 用ライブラリ管理ツール) を使用します。 RubyGems 及び ruby-pg のバージョンは

です。

Ruby のインストール

まずは OS に Ruby のインストールを行います。

Ubuntu 9.10 では、複数の Ruby バージョンが提供されていますが、ここでは Ruby 1.9.1 をインストールします。 別のバージョンをインストールしたい場合は、バージョン部分を読み替えてください。

インストールするパッケージ一覧

apt-get で下記のパッケージをインストールします。

インストール

端末 (ターミナル) で下記コマンドを実行してください。

$ sudo apt-get install ruby1.9.1-full rubygems1.9.1

問題なく実行されれば、Ruby 1.9.1 系がインストールされるはずです。

Ubuntu では、Ruby 本体がいくつかのパッケージに分かれて提供されています。 たとえば RubyGems は rubygems1.9.1 パッケージで提供されていますし、Ruby ライブラリ mkmf *1ruby1.9.1-dev パッケージで提供されます。 これらは Ruby に標準で添付されているものですので ruby1.9.1 パッケージをインストールするとこれらも自動的に入って欲しいところですが、実際にはそうなりません。 標準添付のライブラリ等も含めて Ruby 本体をインストールしたい場合は ruby1.9.1-full パッケージをインストールすれば自動的に必要なパッケージがほとんどインストールされます。 もちろん、必要なパッケージをすべて手作業でインストールしてもかまいません *2

Ruby の実行に使用するコマンドは ruby1.9.1 です。 (バージョン番号が付いている事に注意。) RubyGems の実行に使用するコマンドは gem1.9.1 です。 (Ruby 本体と同様バージョン番号が付いている事に注意。)

PostgreSQL のインストール

次は PostgreSQL および関連するパッケージのインストールを行います。

インストールするパッケージ一覧

apt-get で下記の 2 つのパッケージをインストールします。

インストール

端末 (ターミナル) で下記コマンドを実行してください。

$ sudo apt-get install postgresql libpq-dev

問題なく実行されれば、2 つのパッケージがインストールされるはずです。

パッケージ postgresqlPostgreSQL の本体で、現在のところデフォルトでバージョン 8.4 がインストールされます。 PostgreSQL の開始や停止、再起動などは service コマンドを使用します。

$ sudo service postgresql-8.4 start

特に設定を変更しなければ、PC 起動時に自動的に PostgreSQL も開始するようになっています。 また、パッケージ libpq-dev は、コマンド pg-config をインストールするために必要です。 pg-config コマンドは pg のインストール時に使用されます。

Ruby ライブラリ pg のインストール

最後に、Ruby ライブラリ ruby-pg をインストールします。 Ruby ライブラリ ruby-pg は元々 ruby-postgres という名前だったようなのですが、最近 ruby-pg という名前に変わったようです。 RubyGems 上では pg というたった 2 文字のライブラリ名となっています。

ruby-pg のインストールには RubyGems を使用します。

インストール

端末 (ターミナル) で下記コマンドを実行してください。

$ sudo gem1.9.1 install -r pg

無事終了すればインストール作業は完了です。 エラーが出てしまった場合はエラーメッセージを見て対処してください。

Rubyruby-pg を使用する

最後に使用方法を書いておきます。

ライブラリ ruby-pg は、require "pg" をすることで使用できるようになります。

#! /usr/bin/ruby1.9.1
# -*- coding: utf-8 -*-

# ライブラリ ruby-pg の読み込み
require "pg"

# PGconn オブジェクトが利用できる
conn = PGconn.connect( "localhost", 5432, "", "", "DB_name", "user_name", "password" )
# ...
# DB に対する処理を行う
# ...
conn.close()

exit 0

ライブラリ ruby-pg に含まれる各クラスの使い方は・・・ネット上を探すとありますけど情報が古くてあまり役に立たなかったりします。。 というかインストール時についてくるドキュメントですら現在のクラス仕様と違ってるような・・・。 (PGresult クラスのメソッド一覧を見てみたら、ドキュメントに書いてある result メソッドなどは実際には存在せず、ドキュメントに書いていないメソッドが存在していたり。。)

*1:RubyGems を使用して pg をインストールする際に mkmf が必要となります。

*2:標準添付のライブラリ等も含めて Ruby 本体をインストールするための full パッケージは 1.9.1 系以外には ruby-full というものがありますが、それ以外にはないようですので、必要であればそれぞれのパッケージを別個にインストールする必要があるようです。