RailsをPostgreSQLに対応させてみる
CentOSにPassenger/Ruby2.0/Rails4.0をインストールしてみる(rbenv版)
の環境に
CentOSにPostgreSQL9.3をインストールしてみる
でPostgreSQLをインストールした状態。
RailsをPostgreSQLに対応させてみる。
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 」を付けた場合)
database.yml
database.ymlが、PostgreSQLを設定するようになっている。
・・・
・・・