【Rails】Railsの環境構築（M1 mac）

## はじめに
環境構築はエラーが出ることが多く、その原因の特定も困難であるため完了までに時間がかかってしまうことがありますが、その都度エラー文をしっかりと確認し、一つ一つ解消していけばいつかは必ず環境構築ができますので粘り強く対応してみてください。
本記事に私自身が環境構築をした際に調べた事項について併せて記載していますので参考にしてください。
また、エラーを解消するために情報収集をする際にはGitHubのissueも確認するようにしてください。

https://github.com/rails/rails/issues


## Railsの環境構築（M1 mac）

### Homebrewをインストール
https://brew.sh/index_ja.html

上記URLにアクセスしてください。
![スクリーンショット 2022-02-18 18.35.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342443/e562b960-e37d-2160-8500-1d637785f1df.png)

画像の赤枠部分をコピーしターミナルに貼り付け、実行します。
パスワードを要求された場合には、ご自身のパソコンのパスワードを入力してください。



インストールが完了したら、PATHを通します。
インストールの際に出力されているメッセージの中に以下のような記述があると思いますので探して`echo`から始まる文と`eval`から始まる文をコピー＆ペーストして実行します。

```:ターミナル
==> Next steps:

Add Homebrew to your PATH in /Users/ユーザー名/.zprofile:
 echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/ユーザー名/.zprofile
 eval $(/opt/homebrew/bin/brew shellenv)
```

以降、ターミナルに入力し実行が必要なスクリプトの前に`$`を表記しています。
`$`を除いてその後の1文を入力して実行してください。

```:ターミナル
$ echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/ユーザー名/.zprofile
$ eval $(/opt/homebrew/bin/brew shellenv)
```
:::note warn
注意
パスにユーザー名が含まれていますので、上記をコピーするのではなく、ご自身の環境で出力されている文章をコピーして実行してください。
:::


PATHを通したら`brew -v`をターミナルで実行し、インストールできているか確認を行います。
以下のように表示されたらインストールが完了しています。（表示されている数字は異なることがありますが、問題ありません。）

```:ターミナル
$ brew -v
Homebrew 3.3.10
Homebrew/homebrew-core (git revision 47665856b64; last commit 2022-01-13)
Homebrew/homebrew-cask (git revision dd2bc9a030; last commit 2022-01-13)
```


### rbenvをインストール
rubyのバージョン切り替えを容易に行えるようにするためにrbenvをインストールします。

```:ターミナル
$ brew install rbenv
```
インストールが完了したら、インストールされているか確認します。
以下のように表示されればインストールが完了しています。（数字は異なる場合があります。）

```:ターミナル
$ rbenv --version
rbenv 1.2.0
```

続いてrbenvコマンドを利用するためにPATHを通します。

```:ターミナル
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc

$ echo 'eval "$(rbenv init -)"' >> ~/.zshrc

$ source ~/.zshrc
```
`~/.zshrc`は、ターミナルを開くときに最初に読み込まれるファイルです。
PATHを通す処理や初期化コマンド等を記述します。


### Rubyをインストール
Rubyのインストールを行う前に、先ほどインストールしたrbenvを使用してインストールできるRubyのバージョンを確認します。

```:ターミナル
$ rbenv install -l

2.6.9
2.7.5
3.0.3
3.1.0
jruby-9.3.2.0
mruby-3.0.0
rbx-5.0
truffleruby-21.3.0
truffleruby+graalvm-21.3.0
```

今回は3.1.0をインストールします。

```:ターミナル
$ rbenv install 3.1.0
```

:::note warn
注意
Railsのv5を使用する場合には、Rubyは2.7.5以前のバージョンを指定してください。
Railsのv5はv3のRubyに対応していないようで、ここでRubyのv3をインストールすると後々エラーが出ます。
詳細については以下のissueをご確認ください。
:::

https://github.com/rails/rails/issues/41074

:::note info
`BUILD FAILED　〜`と表示されてインストールができない場合
私の環境（macOS 12.2.1(Monterey)）で`rbenv install 3.1.0`を実行した際に`BUILD FAILED`のエラーが出てRubyがインストールできませんでした。
解消した方法を以下の記事に記載しましたので同じようなエラーが出た方は参考にしてください。
:::

https://qiita.com/P-man_Brown/items/76165ef7d9f2643b02b7


インストールができたら、グローバルで利用するバージョンを設定します。

```:ターミナル
$ rbenv global 3.1.0
```

:::note info
プロジェクトごとにバージョンを設定する場合
プロジェクトごとにRubyのバージョンを設定する場合には該当のディレクトリに移動して`global`の代わりに`local`を使用します。
:::

### Bundlerをインストール
gemのバージョンやgemの依存関係を管理するためにBundlerをインストールします。

https://bundler.io/

https://rubygems.org/

Bundlerをインストールするには以下を実行します。

```:ターミナル
$ gem install bundler
```

インストールが完了したらインストールできているか確認します。（バージョンは異なる可能性があります。）

```:ターミナル
$ bundler -v 
Bundler version 2.3.3
```

### yarnをインストール
Rails6のJavaScriptのコンパイラがWebpackerであるため、yarn又はnpmが必要になります。
Railsでは標準でyarnを使用しているため、今回はyarnをインストールします。
yarnをインストールすることでyarnコマンドを使用することができるようになります。

```:ターミナル
$ brew install yarn
```

インストールが完了したらインストールができているか確認します。数字が表示されればインストールができています。

```:ターミナル
$ yarn -v
1.22.17
```

### Railsをインストール
最後にRailsをインストールします。

```:ターミナル
$ gem install rails
```

:::note info
Railsのバージョン指定
バージョンを指定しないでインストールすると最新バージョンがインストールされます。
他のバージョンをインストールしたい場合には指定する必要があります。
e.g.   $ gem install rails -v 6.1.4.6
また、インストールできるバージョンの確認は以下のコマンドで、バージョンに関する詳細については以下のURLより確認することができます。
:::

```:ターミナル
$ gem search -r ^rails$ -a

*** REMOTE GEMS ***

rails (7.0.2.2, 7.0.2.1, 7.0.2, 以下省略）

```

https://rubyonrails.org/


インストールが完了したら、インストールできているか確認します。

```:ターミナル
$ rails -v
Rails 7.0.2.2
```

### Railsアプリケーションを作成する
デスクトップ等に適当にフォルダ（今回はrails_appフォルダ）を作成し、作成したフォルダに新規アプリケーションを作成します。

フォルダを作成した後にターミナルに`cd`と入力した後に作成したフォルダをターミナルにドラッグ&ドロップすることで以下のように記述されます。


```:ターミナル
$ cd '/Users/ユーザー名/Desktop/rails_app'
```

上記を実行すると以下のように%又は$の前にフォルダ名が表示されます。

```:ターミナル
rails_app $
```

表示が変わっていることを確認したら新しいアプリケーションを作成するために以下を実行します。

```:ターミナル
$ rails new test_app
```
今回は`test_app`としていますが、`test_app`の箇所に任意のアプリケーション名を記述します。
実行すると最初に作成したフォルダ（今回はrails_appフォルダ）内にtest_appフォルダが作成されます。

:::note info
Railsのバージョン指定
新規アプリケーションを作成する際にRailsのバージョン指定をすることができます。
e.g. $ rails _6.1.4.6_ new test_app
尚、バージョンを指定して作成するにはご自身の環境に指定したバージョンのRailsがインストールされている必要があります。
また、バージョン指定以外にもapiモードでアプリケーションを作成したり、使用するデータベースを指定したりすることができます。特別な設定が必要な場合には別途検索してください。
:::

test_appフォルダが作成されていることを確認したら、以下を実行し、test_appフォルダに移動します。

```:ターミナル
$ cd test_app
```

実行すると%又は$の前に`test_app`と表示されます。
表示されたことを確認したら以下を実行します。

```:ターミナル
$ rails s
=> Booting Puma
=> Rails 7.0.2.2 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.6.2 (ruby 3.1.0-p0) ("Birdie's Version")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 000000
* Listening on http://000.0.0.0:3000
* Listening on http://[::0]:3000
Use Ctrl-C to stop
```
`Listening on`の後に表示されるURLを`command + クリック`で開くか、http://localhost:3000 にアクセスしてください。
以下のような画面が表示されれば正常に動作しています。（Railsのバージョンによって表示される画面は異なるようです。）
![スクリーンショット 2022-02-18 23.17.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342443/27fd2f81-64f9-9118-d075-cfa839f48f42.png)

もし、上記の画面ではなく、エラー画面が表示された場合にはエラー文をよく読み、対応してください。
真っ白な画面が表示されてしまった場合には、ターミナルにエラー文が出力されていると思いますのでターミナルに戻り確認してください。

正常に動作していることが確認できたら、ターミナルに戻り`ctrl + c`でPuma（Webサーバー）を停止して完了です。