PostgreSQLを導入

久し振りに Ruby on Rails を弄りたくなったので、今まではSQLiteを使ってアプリケーションを作っていたのを、PostgreSQLに変えて作ってみることにしました。

PostgreSQLの導入

以前にも、PostgreSQLのインストールに挑戦したことがあったが、うまくいかなかったので再挑戦してみたところ、何故か上手くいってしまいました。

sudo yum install -y postgresql93 postgresql93-server postgresql93-contrib postgresql93-libs多分、こんなコマンドを実行したら上手くいったような気がします。

Railsアプリの作製

postgreSQLを使ってアプリを作るときは、 rails new `name` -d postgresqlで出来るようです。

この際、色々とエラーが発生したが、これの解決方法は、こっちに書きました。

rake db:migrateが出来ない

取り敢えず、scaffoldを使って簡易的なモデルとコントローラーを作成し、いざ、rake db:migrateをしようとしたところ、

rake aborted!
PG::ConnectionBad: FATAL:  role "name" does not exist

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

こんなエラーが発生しました。どうやら、ロールがないらしい。

ということで、ロールを作ることに。

ロールの作製

ロールを作成するには、まずはpsql -U postgresコマンドで、スーパーユーザである"postgres"で接続する。

次に、create role name with login;で、ログイン権限付きのロールを作成した。

このとき、文末に;が必要なことに気付くのに、かなりの時間を要した…

ちゃんとロールが作成されているかを確かめるには、\duで確認できる。

ついでに、データベースを作成する際には、create database name;でOK。

データベースが作成されているかを確かめるには、\lで確認できる。

アプリケーションと同じ名前のロールを作成した後は、config/database.ymlのdatabaseの箇所を少し弄って、再びrake db:migrateを実行することで、今度は上手くいった。後は、rails sで、サーバを走らせ、Welcome aboardのページを確認できれば成功。