こんにちは、Railsエンジニアのウェブ系ウシジマくんです。今回はRailsで本番環境にdeployする際によく使われるHerokuについて取り上げます。
僕自身リレーショナルデータベースシステムの中でMySQLが一番使い慣れているのですが、herokuで使用するときにはちょっとしたセッティングが必要で、調査・実装する中で今後のためにも記事にすることにしました。
「HerokuでMySQLを使いたい!」と考えている方のお役に立てれば幸いです。
開発環境
IDE
cloud9
言語
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
フレームワーク
Rails 5.0.6
ターミナルでherokuにログインし、アプリを作成する
$ heroku login Enter your Heroku credentials: Email: # herokuで登録したメールアドレス Password: # herokuで登録したパスワード Logged in as # 上記で入力したメールアドレスが表示される $ heroku create Creating app... done, ⬢ shrouded-ocean-96791| https://git.heroku.com/shrouded-ocean-96791.git $ git push heroku master : : : : remote: Verifying deploy... done. To https://git.heroku.com/fierce-cove-74806.git * [new branch] master -> master # 問題なくdeployできたら、上記のように表示されるHeroku | Application Error
Heroku用にMySQLの設定を行う
HerokuでMySQLを使用するためには、cleardbと呼ばれるアドオンを先ほど作成したアプリにインストールをする必要があります。
[bash] $ heroku addons:create cleardb:ignite Creating cleardb:ignite on ⬢ fierce-cove-74806... free Created cleardb-shallow-46148 as CLEARDB_DATABASE_URL Use heroku addons:docs cleardb to view documentation # 以下のコマンドを実行することで、デプロイ用のDB接続情報を確認することができます。 $ heroku config | grep CLEARDB_DATABASE_URL CLEARDB_DATABASE_URL: mysql://ユーザー名:パスワード@サーバー名/データベース?reconnect=true # ただし、Railsのgemでインストールしているのがmysql2である場合、以下のように書き換えないとmigrationが走らないので注意。 $ heroku config:set DATABASE_URL=mysql2://ユーザー名:パスワード@サーバー名/データベース?reconnect=true Setting DATABASE_URL and restarting ⬢ fierce-cove-74806... done, v6 DATABASE_URL: mysql2://ユーザー名:パスワード@サーバー名/データベース?reconnect=true [/bash]
STAGING環境など、masterと異なるブランチでherokuを動かしたい場合
herokuにRailsプロジェクトをpushする以下のコマンドは、Gitのmasterブランチにある情報をdeployします。
git push heroku master
例えば、
「masterブランチはAWSにdeployしたいけど、念のため本番環境の挙動をherokuでかつ別のブランチで確認したい。」
このように考えた時herokuへdeployするためには以下のコマンドを実行する必要があります。
git push heroku ブランチ名:master 例:git push heroku feature/staging:master
これで現在のブランチの情報をherokuへdeployすることができますよ。
本番環境でfacebook認証を稼働させる場合の注意点
dotenvなどで環境変数にsecret keyなどを読み込ませている場合、git ignoreなどでバージョン管理から除外しているとエラーが発生します。
そのため、一旦git ignoreから削除した上で、herokuへdeployしましょう。
また、画像の赤・青・黄色の枠にそれぞれ本番環境用のドメインを設定してください。
赤枠: fuga.herokuapp
青枠: https://fuga.herokuapp.com/
黄色枠: https://fuga.herokuapp.com/hoge/auth/facebook/callback
本番環境で実際にfacebookのログインボタンを押下して、問題なければ設定完了です。