LoginSignup
31
29

More than 3 years have passed since last update.

RailsDBをMySQLに変更してHerokuでデプロイまでする手順

Last updated at Posted at 2019-04-23

RailsのデフォルトDBはSQLiteですが、MySQLに変更してみようかと思います👨‍💻

development環境

まずは開発環境でMySQLを使用する手順です。

DB設定

Gemfile
gem 'mysql2'
database.yml
#編集
development:
  adapter: mysql2
  encoding: utf8
  database: tweet_app
  pool: 5
  username: root
  password:
  host: localhost
$ bundle install

新規DB作成

$ bundle exec rake db:create
$ bundle exec rails g model User name:string email:string password:string
$ bundle exec rake db:migrate

production環境

実際にHerokuでデプロイした後もMySQLで動くよう実装する手順です。

①Herokuでアプリケーション作成

こちらの記事を参考にしつつ、git push heroku masterをする手前まで進めます。

後述するアドオンの追加のところで、Herokuにクレジットカード情報を登録しておく必要がある(お金はかかりません)ので、登録しておいてください。

②cleardbアドオンを追加する

$ heroku addons:add cleardb

③heroku-postgresqlアドオンを削除する

$ heroku addons:destroy heroku-postgresql -a <アプリ名>

④DATABASE_URLを編集する

$ heroku config | grep CLEARDB_DATABASE_URL
CLEARDB_DATABASE_URL:     mysql://aaaaa:bbbbb@ccccc.cleardb.net/heroku_ddd?reconnect=true

上記のURLをMySQL2に切り替えます。コピーペーストしつつmysql2に書き換えてください

$ heroku config:set DATABASE_URL='mysql2://aaaaa:bbbbb@ccccc.cleardb.net/heroku_ddd?reconnect=true'

⑤環境変数を設定

Herokuで使用する環境変数を設定していきます。

$ heroku config | grep CLEARDB_DATABASE_URL
mysql://aaaaa:bbbbb@ccccc.cleardb.net/heroku_ddd?reconnect=true
  • aaaaa = username
  • bbbbb = password
  • ccccc = hostname
  • heroku_ddd?reconnect = db_name
$ heroku config:add DB_NAME="[db_name]"
$ heroku config:add DB_USERNAME="[username]"
$ heroku config:add DB_PASSWORD="[password]"
$ heroku config:add DB_HOSTNAME="[hostname]"
$ heroku config:add DB_PORT="3306"
database.yml
production:
  <<: *default
  database: <%= ENV['DB_NAME'] %> 
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>

※ご自身の出力結果と照らし合わせながら設定してください。

⑥git push & migrate実行

$ git push heroku master
$ heroku run rake db:migrate
$ heroku open

独学でやっておりますので、間違っている or 動かないなどあれば、ご指摘いただけると幸いです🙇‍♂️

参考

31
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
29