Herokuでpostgresqlを使う方法

 

Ruby on Railsは、デフォルトで使うデータベースがSQLiteなのですが、

これをHerokuで推奨しているデータベースのpostgresqlに変更する方法をメモしておきます。

 

確認環境:

Max OS X El Capitan 10.11.2

Xcode 7.3

Command Line Tools for Xcode 7.3

Homebrew 0.9.9

Ruby 2.3.1

 

以下のコマンドで自分のPCにRuby on Railsのアプリを作成します。

今回は、アプリの名前を test としておきます。

-d postgresql オプションでデータベースにpostgresql(ポストグレエスキューエル)を指定します。

$ rails new test -d postgresql

 

以下のコマンドで、作成したアプリの場所に移動します。

$ cd test

 

scaffoldコマンドで、雛形を作成します。

今回は、name:string hp:integerという2つのフィールドを指定します。

$ rails g scaffold status name:string hp:integer

ここで一旦プレコンパイルしておきます。

(不要かもしれません?)

$ rake assets:precompile

 

ここまで済んだら、作成した「test」アプリをGitHubに登録します。

そして、Herokuで新しいアプリと新しいパイプラインを作成し、

GitHubと連携して、作成した「test」アプリを取り込みます。

 

このあたりの方法は、以下の記事を参考にしてください。

 

 

 

Herokuのダッシュボードから新しく作成したアプリの画面を開き、

Resourcesタブを開きます。

Add-one の虫眼鏡の箇所に postgres と入力すると、Heroku Postgresが現れますので、

それを選択してください。

プランは無料で使える Hobby Devを選んでください。


Tip_07_01_002a

 

ここまで完了したら、画面上のメニューボタンを押して、Databases画面へ移動します。


Tip_07_01_002b

 

作成したデータベース一覧の中から、先ほど作成したデータベース名をクリックしてください。


Tip_07_01_002c

 

Overviewタブの Connection Settings 画面を確認してください。


Tip_07_01_002d

 

ここの値を自分のローカルPCで作成した Ruby on Rails の

/config/database.ymlファイルに設定します。

production:

database: Heroku PostgresのDatabaseの値

port: 5432

username: Heroku PostgresのUserの値

password: Heroku PostgresのPasswordの値-l

host: Heroku PostgresのHostの値

 

development:

production と同じ。

 

/config/database.ymlファイルの設定が完了したら、

以下のコマンドでマイグレートします。

$ rake db:migrate

 

ここまで完了したら、Ruby on Railsのアプリの変更内容を

GitHubにコミットし、リモートリポジトリにプッシュします。

こうすると、Herokuにこの変更が反映されます。

 

そして、Herokuのダッシュボード画面から、作成したアプリの画面を表示し、

画面右上の Open app ボタンを押します。

するとブラウザが起動します。

起動したURLの末尾に /statses を追加して表示してやります。


Tip_07_01_002e

 

scaffoldで作成した、こんな画面が表示されます。


Tip_07_01_002f

 

New Statusのリンクをクリックして新しいレコード追加してやれば、

追加したレコードがちゃんと、画面に表示されます。