Railsアプリでherokuを使うときのDBをMySQLに変更する

# はじめに
かなり色々な人がまとめてくれていましたが、その通りにやっても動かなかったので、備忘録としてまとめておきます。

自分の場合`$heroku login`コマンドが上手く使えなかったので、そういう方がいればこちらの方法で。
※ちなみに、mysqlを使用する場合はクレジットカードが必要になるので（無料で利用できます）
それだと困る方は、標準のpostgresを利用することができます。

#### 使用環境
ruby 2.5.0
Rails 5.1.5
mysql2 0.4.10

## 1. herokuアプリの作成

herokuのアカウント取得に関しては、省略します。ここではherokuアカウントがあることを前提に。

まずは、heroku Toolbeltをインストールします。
heroku Toolbeltとは、コマンドライン上で、herokuの操作ができるようにできるツールです。

```
$brew install heroku-toolbelt
```

(※これは、rubyが入っていないと動かないようなので、Ruby以外で利用する場合は適宜インストールしてください。)

これでインストール完了です。ここで

```
$heroku login
```

とかやると、IDとパスワードでherokuにログインができるようになります。

次に、herokuアプリケーションを作成します。

```
$heroku create
```

で作成が可能です。

ちなみに、

```
$heroku create [app_name]
```

とやるとアプリ名が設定できます。
設定を変更したい場合は

```
$heroku rename [app_name]
```

 とすると、あとからでも変更ができます。

```
$ heroku create
=> Creating [hogehoge]... done, stack is cedar-14
=> https://hogehoge.herokuapp.com/ | https://git.heroku.com/hogehoge.git
=> Git remote heroku added
```

のようになにも指定しない場合、`hogehoge`のようなランダムの文字列が生成され、アプリ名を設定した場合は、こちらにアプリ名が入ります。

ちなみに、URLも同様に生成されるので、この場合、`https://hogehoge.herokuapp.com/`でアクセスが可能です。

## 2. データベースの設定

今回のゴールは、DBの設定が以下の様になっていることです。

<img width="1335" alt="スクリーンショット 2018-03-05 0.18.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/140786/6b07a594-582c-4c47-c03e-66b32d0d8d17.png">

`CREARDB_DATABASE_URL`が `mysql:hogehogehoge`
`DATABASE_URL`が `mysql2:hogehogehoge`

これを目指して設定していきましょう。

まずは、ClearDBアドオンの設定です。

※ClearDBアドオンとは、ClearDBというHerokuとは独立したデータベースサービスが提供している、MySQLを使うためのものです。

herokuのwebページに戻ると先程作成したアプリケーションが一覧に並んでいるかと思います。

<img width="1367" alt="スクリーンショット 2018-03-04 12.27.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/140786/99e63521-8889-fc42-8103-2ededdd7c14c.png">

こちらからアプリケーションを選択して、`Overview`の`Confihure Add-ons`から設定をしていきます。

<img width="732" alt="スクリーンショット 2018-03-04 12.26.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/140786/717a8d54-82c2-5dbd-14a1-dc7558f56dbd.png">

こちらのフォームで、`clearDB`と入力すると、以下のうように、clearDB MySQLアドオンが登録できます。

<img width="1371" alt="スクリーンショット 2018-03-05 0.07.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/140786/e44bbd3b-3924-11ba-b7b3-50734553a24b.png">

Settingsの`Config Variables`から設定一覧が確認できるかと思いますが、そちらの`CREARDB_DATABASE_URL`が `mysql:hogehogehoge`に変わっているかと思います。

コンソールからは、`heroku config`で設定が確認できます。

確認ができたら、今度は`DATABASE_URL`を変更していきます。

コンソールから、

```
heroku config:add DATABASE_URL='mysql2:{hogehoge}'
```

と入力し(hogehogeは先程の`CREARDB_DATABASE_URL`のmysql:以下と同様)

設定可能です。

もう一度コンソールから、`heroku config`で設定が確認すると、今回のゴールである、二つの設定が変更できたかと思います。

## 3.Railsプロジェクトの設定

Railsプロジェクトの方でもデプロイの準備をします。

`config/environments/production.rb`にある

`config.assets.compile = false`を`config.assets.compile = true`に変更します。
（元から変更の必要がない場合もあります。）

ここまできたらコンソールから

```
git push heroku master
```

として、herokuにアプリケーションをpushすることが可能です。（これでデプロイ）

最後に

```
heroku run rake db:migrate
```

でmigrateしてあげて、先程のアプリケーションURLにアクセスすると、自分のアプリケーションが立ち上がっているかと思います。

# まとめ
色々行き来しましたが、コンソールだけで設定も可能です。自分の場合何故かClearDBのアドオンが入手できなかったので、GUIで操作しました。

今回作業してみてわかったかと思いますが、herokuを使うと自分のアプリケーションを簡単にデプロイすることが可能です。設定やアドオンなどを利用でき、ある程度であれば無料で使うことができるので、今後共お世話になるかと思います。


#### 参考
- [HerokuにRailsアプリをデプロイする手順 - Qiita](https://qiita.com/NaokiIshimura/items/eee473675d624a17310f)

- [HerokuでMySQLを使おうとして詰まったところ - Qiita](https://qiita.com/sseo/items/108ef1d94dcb5b227b4f)

- [無料枠内でのHerokuの準備とデプロイ（Mac 10 + Rails 4.2 + MySQL 5.6） - Rails Webook](http://ruby-rails.hatenadiary.com/entry/20150314/1426332751)