【Rails】RailsアプリをGitでバージョン管理し、Herokuにデプロイ

##前提
■あくまで個人の備忘録。見やすは非重視
■データベースは以下の設定にて記述
・開発環境/テスト環境：SQLite3　　・本番環境：PostgreSQL
■Heroku CLI、Gitへの会員登録が完了している
※完了していない場合は以下サイトで登録する
[Heroku CLI](https://signup.heroku.com/login)、[Git](https://github.com/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home)
■Ruby、Railsがインストールがされている
※されていない場合は[コチラ](https://qiita.com/sasami_dc2/items/c1fca6725dfce8b45048 #Qiita )でインストール

##Gitインストール
[こちら](https://git-scm.com/book/ja/v2/使い始める-Gitのインストール)のサイトで順を従ってインストールを行う
※本記事ではWindows10の64bitなのでそれに応じたインストーラーを使用

##Herokuインストール
[こちら](https://devcenter.heroku.com/ja/articles/heroku-cli)のサイトで順を従ってインストールを行う
※本記事ではWindows10の64bitなのでそれに応じたインストーラーを使用

##使用するデータベースをインストール
それぞれ、下記サイトにてインストーラーをダウンロードし、順に従ってインストールを行う
開発、テスト環境：[SQLite3](https://www.sqlite.org/index.html)
本番環境：[PostgreSQL](https://www.postgresql.org)

##Railsアプリの作成

###アプリ作成
Railsアプリを新規作成します。
※データベースはデフォルトのSQLite3で作成するが、任意で変更

```terminal:コマンドプロンプト
  $ rails new (アプリケーション名)
```

作成後アプリケーションディレクトリへ移動しておく


###Gemfile設定変更
開発環境・テスト環境・本番環境で分けて使用できるようにGemfileを以下のように変更

```rails:Gemfile

....(省略)

  ## コメントアウト
  # Use sqlite3 as the database for Active Record
  # gem 'sqlite3', '~> 1.4'

....(省略)

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  
  ## 追加
  gem 'sqlite3'
end

  ## 追加
group development do
  gem 'pg'
end

....(省略)
```

変更したGemfileを反映するため以下のコードを実行

```terminal:コマンドプロンプト
  $ bundle install
```

###database.ymlの設定変更
```rails:database.yml

....(省略)

production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5
```

##Gitの設定

以下を最初の1度のみ実行

```terminal:コマンドプロンプト
  $git init 
```

以下で保存ファイルを選択(今回は全てを保存するコマンドを使用)

```terminal:コマンドプロンプト
  $git add -A
```

以下でコミット

```terminal:コマンドプロンプト
  $git commit -m "ログに記載する説明をここに記載"
```

<font color="Red">※最初のコミット時にはGitのアカウント情報を求められるが
登録、または登録予定があれば以下で設定してからコミット、そうでないなら無視でOK</font>

```terminal:コマンドプロンプト
  $git config --global user.email #Gitのメールアドレス
  $git config --global user.name  #Gitのユーザ名
```

##Heroku
###Herokuの設定

以下でパッチ設定を行う

```terminal:コマンドプロンプト
  $echo 'PATH="/user/local/heroku/bin:$PATH"' >> ~/.profile
```

以下でHerokuのパッチが通っているか確認

```terminal:コマンドプロンプト
  $heroku -v
``` 
バージョンが出てくればOk

###Herokuへログイン

```terminal:コマンドプロンプト
  $heroku login
``` 

以下のようにHeroku CLIのアカウント情報を求められるので該当の情報を入力
<font color="Red">※最初の一度だけ求められる</font>

```terminal
Enter your Heroku credentials:
Email:○○○○○○＠○○○○○○
Password:*************
Login in as ○○○○○○＠○○○○○○
```

2度目以降は以下が表示される

```terminal
  $heroku login
heroku: Press any key to open up the browser to login or q to exit:
```
この場合は、[Enter]キー押下でブラウザーが開き、[q]キーでキャンセル
[Enter]キーを押下した場合は以下のようなページに遷移されるので、[Log In]を押下でログインされる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/658097/16e8a2e6-edef-9f1e-65e2-1d1f336dfd38.png)

###Heroku アプリの作成
```terminal
  $heroku create (アプリ名)
```
アプリ名の指定条件は以下となる。
・半角英数字のみ
・記号は「-」のみ

###Herokuへデプロイ
以下のコマンドでデプロイする

```terminal
  $git push heroku master
```

<font color="Red">※上記のみでは完了していないので注意</font>

デプロイの確定をするには以下のコマンドを実行

```terminal
  $heroku run rails db:migrate
```

デプロイコマンド実行した際に、最後に表示された以下のようなアドレスが、アプリURLとなる。

```
https://○○○○○○○○.herokuapp.com/
```
上記URLでサイトにアクセスしデプロイが完了しているのを確認する



####補足
アプリの更新時は以下を行う

```terminal:コマンドプロンプト
  $git add -A(または指定のファイル)
  $git commit -m "メッセージを記入"
  $git push heroku master
  $heroku run rails db:migrate #テーブルの更新があった場合のみ
```


##スペック情報
OS：Windows10Pro 64bit
IDE：Visual Studio Code
Ruby：2.7.2ｐ137
Heroku：7.51.0
git：2.30.1
SQLite3：3.34.1
PostgreSQL：13.0