JAWSDB設定
バージョン
ruby '2.7.2'
rails '6.1.3.1'
mysql2 '8.0'
前提
- Herokuへのログイン、及びアプリ作成は完了していること
アドオンを追加
- Herokuの標準のDBはPostgresのため、MySQL使う場合はアドオンの追加が必要になる
- MySQLのアドオンは知る限りClearDBとJawsDBの二種類ある(バージョンの違いにより使い分ける)
1. ClearDB の MySQL のバージョンは 5.5系
2. JawsDB の MySQL のバージョンは 8系
今回は、タイトルにもある通り、JawsDBを利用します。
$ heroku addons:create jawsdb:kitefin --version=8.0
# 自動で DB 接続情報が環境変数にセットアップされる
# ただし、必要に応じて分解してアプリに適した形式の環境変数になおすこと
アドオンの確認
$ heroku addons
Add-on Plan Price State
─────────────────────────────── ─────── ───── ───────
jawsdb (jawsdb-amorphous-40408) kitefin free created
└─ as JAWSDB
確認方法とフォーマット
$ heroku config:get JAWSDB_URL
> mysql://DB_USERNAME:DB_PASSWORD@DB_HOST:3306/DB_DATABASE
# 詳細は個人情報のため記載をしませんが、上記の順でURLを確認することができます
JAWSDBの接続情報を環境変数にセット
$ heroku config:set DATABASE_NAME="*************"
$ heroku config:set DATABASE_PASSWORD="****************"
$ heroku config:set DATABASE_USERNAME="***************"
$ heroku config:set DATABASE_URL ="<JAWSDB_URLの値をそのまま設定>"
# RailsアプリはDBのadapterはmysql2なので、変更が必要(mysql: ⇛ mysql2:)
# 環境変数と=の間はあけない(エラーの原因になる)
# 因みに削除する場合は、 $ heroku config:unset DATABASE_HOST
# DBの接続情報は画面から確認できる
heroku configファイルの確認
$ heroku config
# 設定後の結果
DATABASE_NAME: ************* #英数字が入っている
DATABASE_PASSWORD: ************* #英数字が入っている
DATABASE_URL: mysql2://DB_USERNAME:DB_PASSWORD@DB_HOST:3306/DB_DATABASE
DATABASE_USERNAME: *************
JAWSDB_URL: mysql2://DB_USERNAME:DB_PASSWORD@DB_HOST:3306/DB_DATABASE
LANG: en_US.UTF-8
RACK_ENV: production
RAILS_ENV: production
RAILS_LOG_TO_STDOUT: enabled
RAILS_SERVE_STATIC_FILES: enabled
SECRET_KEY_BASE: **************************************************** #特に変更などはしていない
JAWSDBとRailsを連携
Railsアプリ config/database.ymlに設定
- 環境変数から読み込ませる
// config/database.yml
production:
<<: *default
database: <%= ENV['DATABASE_NAME'] %>
username: <%= ENV['DATABASE_USERNAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
url: <%= ENV['DATABASE_URL'] %>
# Heroku configファイルと相違ないか内容の確認を行う
データベース作成
テーブルを作成
$ heroku run rake db:migrate
seedデータを作成
$ heroku run rails db:seed
# seedデータを作成した場合は、こちらのコマンドを実行する
MysqlでJawsDBの中身を確認
$ mysql -u < Username > -p -h <Host > -D < Database >
以上。
完全に個人的なメモにはなっていますが、少しでも誰かの参考になればと思います。
間違っている点などあれば、ご指摘いただけると嬉しいです。