RailsをPostgreSQLに対応させてみる

CentOSにPassenger/Ruby2.0/Rails4.0をインストールしてみる(rbenv版)
の環境に
CentOSにPostgreSQL9.3をインストールしてみる
PostgreSQLをインストールした状態。

RailsPostgreSQLに対応させてみる。

gem install pg

postgresql93-develをインストールする。

$ sudo yum -y install postgresql93-devel

pgのgemをインストールする。

$ gem install pg
Fetching: pg-0.17.1.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.
・・・

エラーになる場合は、--with-pg-configを指定するとうまくいく。

$ gem install pg -- --with-pg-config=/usr/pgsql-9.3/bin/pg_config
・・・
1 gem installed

PostgreSQLの認証方式を変更

パスワードを設定し、

$ su - postgres
-bash-4.1$ psql
postgres=# alter user postgres with password 'パスワード';

peerをmd5に修正して、パスワード認証に変更する。

$ sudo vi /var/lib/pgsql/9.3/data/pg_hba.conf
local   all             all                                     peer
↓
local   all             all                                     md5

再起動して反映。

$ sudo service postgresql-9.3 restart

Railsアプリでデータベース作成

PostgreSQLに対応したRailsアプリを作成する。

$ rails new sample_pg -d postgresql 

いつものように、therubyracerの所はコメントを外しておく。

$ cd sample_pg
$ vi Gemfile
gem 'therubyracer', platforms: :ruby	←コメントを外す
$ bundle install

database.ymlを編集し、
develpmentとtestのusernameとpasswordを指定する。

$ vi config/database.yml
development:
  ・・・
  username: postgres
  password: パスワード
  ・・・
test:
  ・・・
  username: postgres
  password: パスワード
  ・・・

データベースを作成する。

$ rake db:create

確認

sample_pg_developmentとsample_pg_testのデータベースが
作成されているのが確認できる。

$ su - postgres
-bash-4.1$ psql
postgres=# \l
                                               データベース一覧
         名前          |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |      アクセス権
-----------------------+----------+------------------+-------------+-------------------+-----------------------
 postgres              | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 sample_pg_development | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 sample_pg_test        | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 template0             | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
                       |          |                  |             |                   | postgres=CTc/postgres
 template1             | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
                       |          |                  |             |                   | postgres=CTc/postgres

補足

ちなみに、Railsのアプリケーションを作成する際、
「 -d postgresql 」を付ける場合と付けない場合で
どう異なるのか確認しておく。

(左が付けない場合、右が「 -d postgresql 」を付けた場合)

Gemfile

Gemfileは、sqlite3のところがpgになっている。

Gemfile.lock

Gemfile.lockのほうも合わせてpgになっている。

・・・

database.yml

database.ymlが、PostgreSQLを設定するようになっている。

・・・

・・・