Herokuで ruby の buildpack を使うと、以下の条件の場合に config/database.yml が自動的に作成される。
- config ディレクトリがある
- activerecord がインストールされている
- 環境変数に DATABASE_URL が設定されている
データベースに ClearDB などを使う場合、DATABASE_URL を以下のフォーマットで設定する。
mysql2://<username>:<password>@<host>/<database>?<key>=<value>(&<key>=<value>)
例:
mysql2://username:password@us-xxx-xxx-xxxxxxxxxxxx.xx.cleardb.net/rails_production?encoding=utf8&pool=5&timeout=5000
database.yml の内容は rails console から ActiveRecord::Base.connection_config
で確認できる。
irb(main):001:0> ActiveRecord::Base.connection_config
=> {:encoding=>"utf8", :pool=>"5", :timeout=>"5000", :adapter=>"mysql2", :username=>"xxxxx", :password=>"xxxxx", :database=>"heroku_xxxxx", :host=>"us-xxxx-xxxx-xxxx-xx.cleardb.net"}
注意点
ClrearDBで Ignite (Free) や Punch ($9.99/mo) などのプランを使うとCLEARDB_DATABASE_URLという環境変数(例: mysql://xxxxxxxxxxxxxx:xxxxxxxx@us-xxxx-xxxx-xxxx-xx.cleardb.net/heroku_xxxxxxxxxxxxxx?reconnect=true)が作成されるので、これをDATABASE_URLにコピーしてスキームのmysqlをmysql2に修正するだけで簡単に設定できる。
これをこのまま使うと、パラメータのreconnect=trueもdatabase.ymlに設定されてしまうので注意が必要。