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のページを確認できれば成功。