Cloud9/Railsでwebアプリケーションを開発して、herokuで公開するつもりの場合は普通、PostgreSQLを使うかと思います。
Cloud9で開発用のPostgreSQLを動かそうと思ったら、Cloud9ならではの面倒な初期設定というか、初めにしなければならないことがあるので、その辺の忘備録です。
スポンサーリンク
PostgreSQLを指定してappを作成
これはCloud9うんぬんの話ではないですが、DBにPostgreSQLを指定して新しいappを作成するコマンド。
1 | $ rails new APP_NAME -d postgresql |
スポンサーリンク
PostgreSQLを立ち上げる
まず以下のコマンドで、PostgreSQLを立ち上げます。
1 | $ sudo service postgresql start |
Cloud9では、しばらく使っていないとPostgreSQLが眠ってしまいます。PostgreSQLが眠っている状態でテストサーバーでサイトを表示しようとすると、PG::ConnectionBadというエラーが表示されます。
その場合、上記のコマンドでpostgreSQLを再スタートさせましょう。
PostgreSQLにユーザーを登録する
PostgreSQLにユーザーを登録します。まず以下のコマンドでフル権限ユーザーとしてPostgreSQLに接続します。
1 | sudo sudo -u postgres psql |
接続できたらコンソールが以下のようにpsgrコマンド待ち状態になります。
1 2 3 4 | psql (9.3.14) Type "help" for help. postgres=# |
PCのOSのユーザーと同じ名前のユーザーを作成します。
※クライアント認証の為にOSのユーザー名と同じにする必要があります。
1 | postgres=# CREATE USER ユーザー名 SUPERUSER; |
以下のようなエラーメッセージが出た場合は、既にユーザーが作られているだけなので問題ありません。
1 | ERROR: role "ユーザー名" already exists |
ユーザーを作成できたら、\qコマンドでPostgreSQL接続から抜けます。
1 | postgres=# \q |
database.ymlを編集する
/config/database.ymlというファイルがあるので、それを編集します。
defaultの最後に、template: template0を追記します。
1 2 3 4 5 6 7 | default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> template: template0 |
データベース作成
後は普通にデータベースを作成します。
1 | rake db:create |
1 | rake db:migrate |
以上。