herokuの環境変数を設定してrailsからDBにアクセスする

October 15, 2014
ruby rails rails4 heroku 環境変数 デプロイ DB

herokuのデプロイ時にDB関係でよくエラーになるのでメモ。

Heroku Toolbeltをインストールする

アプリケーションの作成をする

view画面を作成しないとエラーが出るので、以下のコマンドでview画面を作成する。

$ rails g controller Top index

ルーティング先をTopControllerにする

config/routes.rb

Rails.application.routes.draw do
  # get 'top/index'
  root 'top#index'
end

環境変数を読み込むよう変更する

/config/database.yml

production:
  adapter: postgresql
  encoding: utf8
  port: 5432
  host: <%= ENV['DB_HOST'] %>
  database: <%= ENV['DB_DATABASE'] %>
  pool: 5
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>
  timeout: 5000

/config/secrets.yml

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
$ git remote add heroku [email protected]:アプリ名.git
$ heroku login
$ heroku config

以下のように出てくる。5432はport番号。

postgres://ユーザー名:パスワード@ホスト名:5432/データベース名

以下のコマンドを入力して環境変数を設定

$ heroku config:set DB_HOST=ホスト名
$ heroku config:set DB_DATABASE=データベース名
$ heroku config:set DB_PASSWORD=パスワード
$ heroku config:set DB_USERNAME=ユーザー名
$ heroku config:set LANG=ja_JP.UTF-8
$ heroku config:set TZ=Asia/Tokyo
$ heroku config:set SECRET_KEY_BASE=secrets.ymlに書いてあった文字列
$ heroku config:set RACK_ENV=production