Railsチュートリアルでつまずいたところ（第1章）

## 環境
MacBookPro'13(2016)
macOS 10.15.7(Catalina)
Safari 14.0

## Cloud9のショートカット
ファイル保存の`⌘+S`を押すとSafariのページ保存のショートカットが優先されてしまい使えませんでした。
Cloud9の画面右上の歯車マーク→Keybindingsから、ショートカットを`^+S`に設定。

## ディレクトリ周り
これはつまづいたというかメモですが。
Cluod9で作ったrails-tutorialプロジェクトのディレクトリは`/home/ubuntu/environment/rails-tutorial`。
~はユーザーのホームディレクトリを指します。Cloud9ではubuntuというユーザーを与えられているようなので`/home/ubuntu`。
最初に叩くコマンド

```sh
$ echo "gem: --no-document" >> ~/.gemrc`
```
は`/home/ubuntu/.gemrc`に対して追記しています。

```sh
ubuntu:~/environment $ echo "gem: --no-document" >> ~/.gemrc
ubuntu:~/environment $ pwd
/home/ubuntu/environment
ubuntu:~/environment $ ls -al ../
total 100
drwxr-xr-x 13 ubuntu ubuntu 4096 Jan 21 11:35 .
drwxr-xr-x  4 root   root   4096 Jan 19 18:01 ..
drwxrwxr-x  2 ubuntu ubuntu 4096 Jan 21 11:31 .aws
-rw-------  1 ubuntu ubuntu   82 Jan 21 11:38 .bash_history
-rw-r--r--  1 ubuntu ubuntu  220 Apr  4  2018 .bash_logout
-rw-r--r--  1 ubuntu ubuntu  200 Jan 19 18:07 .bash_profile
-rw-r--r--  1 ubuntu ubuntu 1543 Jan 19 18:07 .bashrc
lrwxrwxrwx  1 ubuntu ubuntu    7 Jan 19 17:52 .c9 -> /opt/c9
drwxr-xr-x  4 ubuntu ubuntu 4096 Jan 21 11:30 .cache
drwx------  4 ubuntu ubuntu 4096 Jan 21 11:31 .config
drwxr-xr-x  3 ubuntu ubuntu 4096 Jan 19 18:08 .gem
-rw-rw-r--  1 ubuntu ubuntu   19 Jan 21 11:35 .gemrc
-rw-r--r--  1 ubuntu ubuntu  102 Jan 21 11:31 .gitconfig
drwx------  3 ubuntu ubuntu 4096 Jan 19 18:19 .gnupg
-rw-r--r--  1 ubuntu ubuntu  118 Jan 19 18:07 .mkshrc
drwxr-xr-x  4 ubuntu ubuntu 4096 Jan 19 18:14 .npm
-rw-------  1 ubuntu ubuntu   16 Jan 19 18:01 .npmrc
drwxr-xr-x  7 ubuntu ubuntu 4096 Jan 19 17:46 .nvm
-rw-r--r--  1 ubuntu ubuntu 1156 Jan 19 18:07 .profile
drwxr-xr-x 25 ubuntu ubuntu 4096 Jan 19 18:07 .rvm
drwxr-xr-x  2 ubuntu ubuntu 4096 Jan 19 17:26 .ssh
-rw-r--r--  1 ubuntu ubuntu    0 Jan 19 18:08 .sudo_as_admin_successful
-rw-r--r--  1 ubuntu ubuntu  118 Jan 19 18:07 .zlogin
-rw-r--r--  1 ubuntu ubuntu  118 Jan 19 18:07 .zshrc
drwxr-xr-x  3 ubuntu ubuntu 4096 Jan 21 11:30 environment
drwxr-xr-x  5 ubuntu ubuntu 4096 Jan 19 18:12 node_modules
-rw-r--r--  1 ubuntu ubuntu  746 Jan 19 18:12 package-lock.json
ubuntu:~/environment $ cat ../.gemrc
gem: --no-document
```


## rails serverが止められない
`rails server`で動いているものを止めようとしてctrl+cを押しても応答がなく（なんかCloud9が重い）、いろいろガチャガチャやっていたら止まらなくなってしまいました。

```
A server is already running. Check /home/ubuntu/environment/hello_app/tmp/pids/server.pid.
```

以下の記事の、server.pidを削除する方法で解決。
[A server is already running 対処方法【Rails】 - Qiita](https://qiita.com/uloruson/items/78b0d2d5c30a1f79fc02)

## Heroku上のデプロイが失敗する
Herokuのリポジトリにpushしたところ、赤字で以下のように怒られました。

```
remote:  !
remote:  !     The Ruby version you are trying to install does not exist on this stack.
remote:  !     
remote:  !     You are trying to install ruby-2.6.3 on heroku-20.
remote:  !     
remote:  !     Ruby ruby-2.6.3 is present on the following stacks:
remote:  !     
remote:  !     - cedar-14
remote:  !     - heroku-16
remote:  !     - heroku-18
remote:  !     
remote:  !     Heroku recommends you use the latest supported Ruby version listed here:
remote:  !     https://devcenter.heroku.com/articles/ruby-support#supported-runtimes
remote:  !     
remote:  !     For more information on syntax for declaring a Ruby version see:
remote:  !     https://devcenter.heroku.com/articles/ruby-versions
remote:  !
```

[知識ゼロの人間がRails チュートリアルを進める_第1章 - Qiita](https://qiita.com/nusutto7/items/5f157d062683cc50fa07)
stackをひとつ古いものにすれば良さそう。

上の記事の方と同様、stackがなんなのか分からないので調べてみます。
[Stacks | Heroku Dev Center](https://devcenter.heroku.com/articles/stack)
（2021/1/23現在、英語と日本語で情報が違っているので注意。）
まあざっくりHerokuアプリが乗っかるOSってことなのかな。
heroku-20はUbuntu20.04、heroku-18はUbuntu18.04をベースにしていると。
割と最近、デフォルトがheroku-20になったようなので、Railsチュートリアルの手順が追いついていないってことなんでしょう。

heroku-20にとってはRuby2.6.3は古すぎるらしいので、stackを切り替えてみます。

```
ubuntu:~/environment/hello_app (master) $ heroku stack:set heroku-18
Setting stack to heroku-18... done
```

これで改めて`git push heroku master`することで、デプロイが成功しました。

(2021/02/20追記)バージョンを下げるよりも、バージョンの指定を外して最新のRuby+最新のstackを使ったほうがいいとご指摘をいただきました。詳細は@jnchitoさんのコメントを参照。