読者です 読者をやめる 読者になる 読者になる

HerokuでMySQL&Railsを使う

RailsのアプリケーションをHerokuで動かそうとして,MySQLの設定部分でハマったのでメモ.

gemを追加

Gemfileにmysql2を追加.その後bundle install

database.ymlの修正

productionの設定にurlを追加する

production:
  <<: *default
  database: app_production
  username: app_production
  password: <%= ENV['APP_DATABASE_PASSWORD'] %>
  url: <%= ENV['DATABASE_URL'] %>

ClearDBのアドオンを追加

HerokuでMySQLを扱うために必要なアドオンを追加

heroku addons:add cleardb:ignite

環境変数の修正

現在セットされている環境変数heroku config -sで確認する.この-sオプションは忘れないように.

heroku config -s | grep CLEARDB_DATABASE_URL
=>
CLEARDB_DATABASE_URL=mysql://aa11bb88ee55fb:999f0130@us-cdbr-iron-east-02.cleardb.net/heroku_f99999a6ee0a777?reconnect=true

環境変数CLEARDB_DATABASE_URLの値をコピーして,環境変数DATABASE_URLの値をその値に更新する.このときCLEARDB_DATABASE_URLの値ではmysql://~となっているが,DATABASE_URLのほうではmysql2://~となっていることに注意

heroku config:set DATABASE_URL='mysql2://aa11bb88ee55fb:999f0130@us-cdbr-iron-east-02.cleardb.net/heroku_f99999a6ee0a777?reconnect=true`

これでHeroku側の準備が完了.これでDBが扱えるようになる.

heroku run db:create
heroku run db:migrate

所感

環境変数DATABASE_URLの値を変える部分で3時間くらいハマっていた.Herokuの公式や他のブログでMySQLの導入法について解説しているが,どれもCLEARDB_DATABASE_URLの値の確認に

heroku config

を使っていた.以前はこれで値が表示されたのだが,現在はHerokuの仕様が変わったようで-sオプションを付けないとURLが確認できないようになっている.

あまりにも分からなすぎて,Herokuのサポートに相談したらすぐに返答がきて解決した.ありがとうHerokuサポートチーム!!!

参考URL

devcenter.heroku.com