Ruby on RailsのアプリをGAEでデプロイする方法

##1.まずはじめに
ポートフォリオを作成する上で少しオリジナル性を出したくてherokuではなくGCPを利用しようとしたのがきっかけになります。
その中で一番時間を取らなさそうなGAEでアプリをデプロイすることにしましたのでその際にやったことを記述しております。

##2.準備したもの

###2-1.rubyのバージョン
サーバーのrubyにバージョンとアプリのバージョンを揃えました。
※<a href=https://qiita.com/Nash-BETA/items/4c9e43b7ab12a0b45994>こちら</a>でバージョンアップについて書いてます

###2-2.GitHubのレポジトリ
GitHubのレポジトリをクローンしますので必須になります。

###2-3.app.yaml

ルートディレクトリーにapp.yamlファイルを作成しておきます。

```app.yaml
entrypoint: bundle exec rackup --port $PORT
env: flex
runtime: ruby
```

##3.GCP操作方法

###3-1.GAE内での操作

GCPでApp Engineをクリックします。
<img width="291" alt="GCPでGAEの選択" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454305/49c480ab-eec8-34a2-b15e-d2e228146a11.png">

クリックすると下記の画面になるかと思います。
その中の赤枠でカッコってあるものをクリックします。（Cloud Shellが起動されます）

<img width="1419" alt="Cloud Shellの起動" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454305/6a7114e7-f4e8-286a-84d5-750518afa801.png">


###3-2.GitHubのクローン

Cloud Shellが起動したらまず初めに自身のレポジトリをクローンします。

```terminal
$ git clone https://github.com/Nash-BETA/test.git
Cloning into 'test'...
remote: Enumerating objects: 8394, done.
remote: Counting objects: 100% (8394/8394), done.
remote: Compressing objects: 100% (6611/6611), done.
remote: Total 8394 (delta 1502), reused 7935 (delta 1047), pack-reused 0
Receiving objects: 100% (8394/8394), 34.13 MiB | 9.60 MiB/s, done.
Resolving deltas: 100% (1502/1502), done.

```
###3-4.GAEのgemのインストールおよびDBの作成

クローンが完了したらディレクトリを移動してアプリケーションコードを表示させます。

```terminal
$ cd test
$ cat app.yaml
```
次に**bundle install**を行います。

```terminal
$ bundle install
```
DBの作成をします。

```terminal
$ rake db:migrate
```
###3-5.サーバーの選択

GCPコマンドでアプリの作成およびサーバーの選択

```terminal
$ gcloud app create
You are creating an app for project [First project].
WARNING: Creating an App Engine application for a project is irreversible and the region
cannot be changed. More information about regions is at
<https://cloud.google.com/appengine/docs/locations>.
Please choose the region where you want your App Engine application
located:
 [1] asia-east2    (supports standard and flexible)
 [2] asia-northeast1 (supports standard and flexible)
 [3] asia-northeast2 (supports standard and flexible)
 [4] asia-south1   (supports standard and flexible)
 [5] australia-southeast1 (supports standard and flexible)
 [6] europe-west   (supports standard and flexible)
 [7] europe-west2  (supports standard and flexible)
 [8] europe-west3  (supports standard and flexible)
 [9] europe-west6  (supports standard and flexible)
 [10] northamerica-northeast1 (supports standard and flexible)
 [11] southamerica-east1 (supports standard and flexible)
 [12] us-central    (supports standard and flexible)
 [13] us-east1      (supports standard and flexible)
 [14] us-east4      (supports standard and flexible)
 [15] us-west2      (supports standard and flexible)
 [16] cancel
Please enter your numeric choice:
```

14を選択。（特に理由がないのですがus-east4を選択しました）

###3-5.app.yamlファイルにシークレットコードの追加

```terminal
$ bundle exec rails secret
[シークレットキーが表示されます]
$ vim app.yaml
 entrypoint: bundle exec rackup --port $PORT
 env: flex
 runtime: ruby
```
vim上で**o**をタイピングして挿入モードにして、下記の様に追加する。

```app.yaml
 entrypoint: bundle exec rackup --port $PORT
 env: flex
 runtime: ruby
 env_variables:
  SECRET_KEY_BASE: [シークレットキー]

```

escキーを押して:wqを入力すれば、変更内容の保存完了

###3-6.デプロイして完了

```terminal
$ gcloud app deploy
Updating service [default] (this may take several minutes)...done.
Setting traffic split for service [default]...done.
Deployed service [default] to [https://Firstproject.appspot.com]

```


これで完了