Railsのデータベースにpostgresqlを使おうとして

ちょっと前の出来事ですが、記憶とメモを頼りにハマったところをWebに放流します。
君に届け

背景

RailsのアプリをHerokuにアップするため、データベースをデフォルトのSQLLite3からpostgresqlに変更した時のお話。

Postgres入門

Postgresは起動しなければ使えない!

知りませんでした。そしてハマりました。(2日・3日ぐらい)
今まで使ってきたRailsのデフォルトデータベースであるSQLLite3は、ただなんとなく。で使えちゃってたので、
まさか起動が必要とは!w
考えれば当然かもしれませんが、素人上がりで「パソコンよく分かりませーん」っとか、自分みたいに言ってきた人ならきっとハマるはず。

エラーメッセージで調べたってそれ起動してないじゃんみたいな情報見つけられなかったし、(きっとみんなが恥ずかしくて日記書いてないだけと信じてますよ)

とりあえず、postgres今すぐ起動しましょう!
起動してないと自分の愛しいMBAちゃんではこんな感じのエラーが出ました。

Is the server running on host "localhost" (fe80::1) and accepting
TCP/IP connections on port 5432?
それともこっちだったかな?
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?


Postgresダウンロードは下記のサイトから行いました。
http://postgresapp.com/documentation

自分は brew 使わずに app をダウンロードして使ってます。なんかこっちの方使ってよ的なことが書いてあったような気がしたので(英語読めません)


ちなみにbrewとかで入れてターミナルからpostgres起動する場合は、

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
ストップする場合は
pg_ctl -D /usr/local/var/postgres stop -s -m fast
らしいですよ。

app の方はクリックしてあげればいいだけなので楽ですね。アイコンでるので起動してるかどうかも一目でわかりますよ

使い方

ココらへんからは、もっといい日記いっぱいあるのでそっち見てもらえばいいかと

http://www.hizlab.net/app/pgsql.html

ざっくりした流れは

  • ユーザを作る
  • DBを作る

その後Railsで使うには

新規にアプリ作るなら
http://d.hatena.ne.jp/mrkn/20070321/rails_usage

これからやる場合は
GemFileを変更して
config/databese.ymlを

development:
adapter: postgresql
encoding: unicode
pool: 5
database: 作成したDB
username: ユーザ名
password:
host: localhost
とかかな

productionの方は特に何もやらずにHerokuが上手くやってくれたっぽいような気がする。