Rails+MySQL(ClearDB)でHeroku Review Appsを構築する
🕘

Rails+MySQL(ClearDB)でHeroku Review Appsを構築する

Created
May 10, 2022 09:02 AM
Tags
Ruby on Rails
Heroku
heroku/ruby ビルドパックを使うと、DATABASE_URL 環境変数から config/database.yml が作成される。データベースにMySQL(ClearDB)を使う場合、CLEARDB_DATABASE_URL にデータベース接続用のURLが設定されるため、config/database.yml が作成されない。
heroku-buildpack-run などを使ってビルドフェーズで database.yml を作成し、CLEARDB_DATABASE_URL のスキームを mysql:// から mysql2:// に変更して database.yml の url に設定することでRailsからデータベースに接続できる。
app.json
{ "environments": { "review": { "addons": [ "cleardb:ignite" ], "buildpacks": [ { "url": "heroku/ruby" }, { "url": "https://github.com/weibeld/heroku-buildpack-run.git" } ], "scripts": { "postdeploy": "rails db:migrate db:seed" } } } }
config/database.review.yml
production: adapter: mysql2 encoding: utf8 url: <%= ENV["CLEARDB_DATABASE_URL"].sub("mysql://", "mysql2://") %>
buildpack-run.sh
#!/bin/bash cp -v config/database.review.yml config/database.yml