デプロイする方法

デプロイの方法を自分の備忘録として残しておきます。

GitHubにご自身のアプリがmasterにマージされた状態と言う前提条件で進めます。


まずHerokuと言うサービスを使います
Herokuの新規登録ページ
https://signup.heroku.com/login

ここで必要な項目を入力したらメールが届くのでそこに入って以下の入力をしましょう！
<strong>※パスワードは英数・数字・記号の3つを含み8文字以上を入力しましょう。</strong>

![スクリーンショット 2021-01-16 18.57.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/f1a5f279-da8b-2756-65e7-eb458afd2d7f.png)


なんかこんなやつがでてきたら登録完了⬇︎

![スクリーンショット 2021-01-16 18.59.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/a9c469f4-3731-77fd-b0dd-ee35b503f3c6.png)


下のような画面が出てきたら画面下の「Accept」をクリックしてください⬇︎

![スクリーンショット 2021-01-16 19.00.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/185f87f9-8592-55a3-b51c-5a56dfa6b5c9.png)


Herokuのトップ画面に行けたらおk⬇︎

![スクリーンショット 2021-01-16 19.01.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/2fc1e20c-5603-f44a-0727-9ade52aec8a4.png)

<h1>Herokuの注意点</h1>
Herokuは基本的に無料で利用が可能ですが、使用するデータベースの設定がデフォルトでPostgreSQLというRDBMSになっています。

HerokuでMySQLを使用する為にはクレジットカードの登録が必須となっているので、アカウント管理ページのBillingからカード情報を登録しましょう。

<h3>クレカの登録</h3>
私はMySQLを使いたのでクレカを登録します（別にしない人は飛ばしてください）

以下のスクショの手順で進めましょう

![スクリーンショット 2021-01-16 19.05.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/b3a361e5-726f-e583-918e-d32d61f33a75.png)


![スクリーンショット 2021-01-16 19.06.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/ec1e31e3-6175-7a98-117e-b7b22bc252e9.png)

![スクリーンショット 2021-01-16 19.06.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/4bd26830-5802-ebf7-5018-9693db771624.png)

<strong>クレジットカードの情報を入力</strong>

![スクリーンショット 2021-01-16 19.06.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/5ffba5d3-605b-8d63-c9b5-6462046dc5f0.png)


<strong>以下のような画面になれば登録完了！</strong>

![スクリーンショット 2021-01-16 19.06.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/7079997c-bc68-9e2b-39c4-dc7d488f9f72.png)


<h1>Heroku CLIのインストール</h1>

インストールする前にHerokuにアップしたいディレクトリに移動してください。
今回はprojectディレクトリをアップする手順で説明します

```terminal:ターミナル
%  brew tap heroku/brew && brew install heroku
```

Herokuのバージョン確認コマンド↓

```ruby
% heroku --version

heroku/7.40.0 darwin-x64 node-v12.16.2 # こんなやつが出てきたらおk
```

```ruby
# Herokuへログインするためのコマンド
% heroku login --interactive
  => Enter your Heroku credentials.
# メールアドレスを入力し、エンターキーを押す
  => Email:
# パスワードを入力して、エンターキーを押す
  => Password:
```

<h1>Heroku createコマンド</h1>

```ruby
% heroku create アプリ名
```

ちゃんとできたか確認のコマンド⬇︎

```ruby
% git config --list | grep heroku
```

<strong>fatal: not in a git directory</strong>以外が表示されていれば 次に進みましょう


<h1>ClearDBアドオンの追加</h1>
ClearDBアドオンとは、MySQLを使うためのツールです。ClearDBというデータベースサービスが提供しているアドオンで、これを追加することにより、HerokuでMySQLを使用できるようになります。

```ruby
% heroku addons:add cleardb
```

<h2>設定の変更</h2>

アドオンを追加したけどまだその設定ができていないので以下のコマンドを実行

```ruby
% heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`
```

これでClearDBデータベースのURLを変数heroku_cleardbに格納できました。

```ruby
% heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}
```

これでデータベースのURLを再設定できました。
AjaxAppではmysql2というGemを使用しているので、DATABASE_URLの冒頭がmysql2://に変更されていることも確認しておきましょう。



<h1>credentials.yml.encの中身の確認</h1>
以下のコマンドを実行して中身を確認

```terminal:ターミナル
% EDITOR="vi" bin/rails credentials:edit
```

以下のような画面になったらおk
確認したら「escキー」→「:」→「q」と入力し、「enterキー」を押して credentials.yml.encを閉じる

![スクリーンショット 2021-01-17 2.16.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/e4c9b691-cbe2-8ad4-30cd-058cbd498c2b.png)


<h1>環境変数の設定</h1>
<h2>heroku configコマンド</h2>

Heroku上で環境変数の参照・追加・削除等をする場合に用います。環境変数の追加であれば<font color="red">heroku config:set 環境変数名="値"</font>と実行します。そうすることによって、Heroku上で環境変数を追加できます。

以下のコマンドをターミナルで実行

```terminal:ターミナル
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

% heroku config
```
以下のような感じになっていたらおk

![スクリーンショット 2021-01-17 2.49.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/cadd2056-449c-30d7-6c09-bc96eb1def68.png)



<h1>アプリケーションをプッシュ</h1>
以下のコマンド2つを実行してアプリケーションをプッシュ

```terminal:ターミナル
% heroku stack:set heroku-18 -a アプリケーション名
```


```terminal:ターミナル
% git push heroku master
```


プッシュが成功したら以下のコマンドでマイグレーションを実行

```terminal:ターミナル
% heroku run rails db:migrate
```

<h1>公開の確認</h1>
以下のコマンドでいろいろな設定を確認することができる

```terminal:ターミナル
% heroku apps:info
```


上記のコマンドで実行したあと、その項目の中にWeb <strong>URL: https://....アプリのURL</strong>

があるのでそれがWEBで公開されているURLになる

```terminal
% heroku config
```
上記はherokuの環境変数やデータベース設定を確認するコマンドになる。


<h1>もしそのURLんびアクセスしてエラーが出たら（汗</h1>

以下のコマンドを実行してヒントを得る

```terminal:ターミナル
% heroku logs --tail --app アプリ名
```

「heroku logs アプリ名」のコマンドでも確認できるが、「--tail」オプションを使うことによって最新の10行のログのみを表示してくれるようにする





<h1>解説なんて不要だぁ！な、せっかちさん用コマンドのみのまとめ</h1>

ログインコマンド

```terminal:ターミナル
% heroku login --interactive
```
Heroku上で作成

```terminal:ターミナル
% heroku create アプリ名
```
ClearDBアドオンの追加

```terminal:ターミナル
% heroku addons:add cleardb
```

設定の変更

```terminal:ターミナル
% heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`
```
データベースの再設定

```terminal:ターミナル
% heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}
```

中身の確認、確認したら「escキー」→「:」→「q」と入力し、「enterキー」

```terminal:ターミナル
% EDITOR="vi" bin/rails credentials:edit
```

環境変数の設定

```terminal:ターミナル
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
```

アプリのプッシュ

```terminal:ターミナル
% heroku stack:set heroku-18 -a アプリケーション名
```


```terminal:ターミナル
% git push heroku master
```

マイグレーションの実行

```terminal:ターミナル
% heroku run rails db:migrate
```

設定の確認

```terminal:ターミナル
% heroku apps:info
```

最後まで見ていただいてありがとうございます！
誰かのお役に立てれば幸いです！