Ruby on Railsの環境構築をメモ書き(Rails version: 6.0.3.4) 

#はじめに
Ruby on Railsの環境構築について、いくつか躓いた点があるので、Rails severが起動するまでの環境構築をアウトプットします。
⚠私はエンジニアではありません(WEB系エンジニア転職を目的としております)ので、説明が分かりにくかったり、至らない点が数多くあるかもしれませんが、ご了承ください。
また、私自身のローカル環境と、読者のローカル環境とではバージョンが違ったり、エラーが出ることも考えられます。
そのような場合は、他の記事を参考に試してみてください。
#MacBookのスペック
* macOS Catalina(10.15.7)
* MacBook Pro (13-inch, 2020, Two Thunderbolt 3 ports)
* プロセッサ　1.4Ghz　クアッドコア Intel Core i5
* メモリ　16G

#必要なもの
* Homebrew (MacOS用のパッケージ管理システム)
* rbenv (複数のRubyのバージョンを管理し、プロジェクトごとにRubyのバージョンを指定して使うことを可能としてくれるツール)
* bundler (gemのバージョンやgemの依存関係を管理してくれるgem)
* Ruby 2.5.0以上 (Ruby on Rails6を動かすにはRuby2.5以上が必要です。)

これらのツールをインストールしていることが前提になります。
各ツールのインストール方法などは、ここでは省きます。(参考記事を掲載しておきます。)
また、基礎的なLinuxコマンド(cdやmkdir)の知識も必要です。

#手順① ディレクトリ(ファイル)の作成
Railsアプリを作成するための、ディレクトリをデスクトップやPC内のHHDなどに作成します。(私はローカルマシンの容量を食いたくないという理由で、毎回Googleドライブにディレクトリを作成しています。)
＊ターミナルでコマンドを打ちます。

```:ディレクトリの作成
$ mkdir test
$ cd test
```

ディレクトリを作成したらcdコマンドで作成したディレクトリに移動します。

#手順② Gemfileの作成
Gemfileとは簡単に説明すると、gemの一覧を管理するファイルです
この先bundle installというコマンドでgemをbundlerを利用してインストールすることがあります。
その際、Gemfileに記載されているgemの一覧を参照し、まだインストールされていないgemがあればインストールを行います。

```:Gemfileの作成
$ bundle init
```

上記のコマンドを叩くと、先程作成したディレクトリ内にGemfileというファイルが自動的に作成されているかと思います。
作成されたGemfileを開くと下記のコードが書かれています。

```:Gemfile
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# gem "rails"
```

Gemfileの一番最後の、 #gem "rails" というコードがコメントアウトした状態になっていると思いますので「command + /」でコメントアウト解除します。

#手順③ bundle installする
ターミナルを開き、

```:ターミナル
$ bundle install --path vendor/bundle
```

というコマンドでbundle installします。
 --path vendor/bundleというのは、ローカル上ではなく、プロジェクト内にgemをインストールするコマンドです。
プロジェクト内のローカルに複数バージョンのgemがインストールされてごちゃごちゃになってしまうことを防げます。
インストールが完了すると「ls」コマンドでディレクトリ内を確認します。
すると、

```
Gemfile  Gemfile.lock  vendor
```

Gemfile他にGemfile.lockというファイルとvendorというディレクトリが作成されていると思います。
Gemfile.lockとvendorについての説明はここでは割愛しますが、正常にbundle installされていればGemfile.lock  vendorがあることを確認してください。
#手順④ Railsアプリケーションの作成
ここまできたらいよいよRailsアプリケーションを作成します。
Railsアプリケーション作成にはrails newコマンドを使います。
rails newコマンド前に、bundle execをつけていますが、これは今いるプロジェクト内でコマンドを実行する、というコマンドです。
先程、bundle install –path vendor/bundleでパスを指定してgemをインストールしましたが、先頭にbundle execをつけることで、Gemfileに応じたバージョンを実行することになります。
今回は「sample」というアプリケーションを作成するとします。
ターミナルを開き、

```:ターミナル
$ bundle exec rails new sample
```

というコマンドを打ちます。
するとターミナル内でアプリケーションのインストールが始まります。
インストールが完了すると「ls」コマンドでディレクトリ内を確認します。

```
Gemfile	　Gemfile.lock	　sample 	 vendor
```

先程rails newで作成した「sample」というディレクトリが作成されているかと思います。
rails newで作成したアプリケーションの中に、WEBアプリ開発に必要なものが入っています。
###＊LoadErrorエラーが出る場合
インストール完了後、

```
$ cannot load such file -- bootsnap/setup (LoadError)
```

このようなエラーメッセージが出る場合があります。(私がそうでした)
これはbootsnap/setupというファイルを読み込む事ができません、というエラーです。
このエラーにより、railsアプリが動かない、といった事例があるそうです。
このエラーを解決するには2つの方法があります。
1つは、configu/boot.rbに書いてあるコードをコメントアウトする方法です。
configuディレクトリ内のboot.rbというファイルを開くと

```ruby:boot.rb

ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)

require 'bundler/setup' # Set up gems listed in the Gemfile.
require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
```

このようにコードが書かれていると思います。

```ruby

require 'bootsnap/setup'
```

上記の箇所をコメントアウトにすることで問題なく動くようになります。
2つ目の解決方法は、bootsnapのgemを追加するという方法です。
Gemfile内で

```ruby:Gemfile

gem 'bootsnap'
```

と記述し、ターミナル上で
$ bundle install --path vendor/bundleすると問題なく動くようになります。
#手順⑤ Railsサーバーの立ち上げ
ここまできたら後はrails severを立ち上げるだけです。
cdコマンドを使って、先程作成したsampleディレクトリに移動します。
sampleディレクトリにいることを確認して、

```
$ bundle exec rails server
```

というコマンドをうち、Railsのサーバーを立ち上げます。
###*RuntimeErrorが出る場合
私がここで詰まったので記載しておきます。
本来、bundle exec rails serverで、サーバーを立ち上げて
http://localhost:3000/
↑にアクセスすると「Yay! You're on Rails!」
というような画面が表示されるのですが、

```
Please run rails webpacker:install Error: No such file or directory
```

上記のようなエラーが出てしまいました。
これはRails6でwebpackerが標準になったことにより、Railsアプリの開発環境にyarnのインストールが必要になったことで、webpackerがインストールされてません、というエラーになります。
webpackerとyarnがインストールされていないので、

```
$ brew install yarn
```

というコマンドでyarnをインストールします。
yarnのインストール完了後、

```
$ rails webpacker:install
```

というコマンドでwebpackerをインストールします。
インストールが完了すると、

```
Webpacker successfully installed 🎉 🍰
```

このようにインストールが完了しました、というようなメッセージが表示されると思います。
これでサーバーの立ち上げ準備が完了です。
再度、ターミナル上で、$ bundle exec rails serverコマンドを打ち、
http://localhost:3000/
にアクセスします。すると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/782206/427c0d3f-21a0-0227-c1e6-f338c9840aec.png)

Yay! You're on Rails! の画面が出力されると思います。
サーバーを落とすときは「control + C」ボタンを押すと、サーバーが終了します。
これでRuby on Railsのでのアプリ開発ができるようになりました。
#まとめ
Ruby on Railsの環境構築について初めて投稿してみました。
私はまだまだ駆け出しエンジニアとして、Ruby,Ruby on Railsを勉強しています。
Twitterなどで、駆け出しエンジニアの方が環境構築がうまくいかず、挫折したというコメントを見かけることがあります。
環境構築で挫折してしまうのは非常にもったいないと思いますし、私自身もできるだけ挫折しないように今回このような記事を書いてみました。
少しでも環境構築ができない人がこれを見て、環境構築ができるようになったら嬉しいです。
これから少しずつQiitaにてアウトプットしていきますので、よろしくおねがいします。
#参考記事
* [homebrewとは何者か。仕組みについて調べてみた](https://qiita.com/omega999/items/6f65217b81ad3fffe7e6)
* [rbenvでRubyを管理し、Rails開発環境を構築する](https://mae.chab.in/archives/2612)
* [【Rails】結局bundlerって何？bundlerの仕組みを図解形式で徹底解説](https://pikawaka.com/rails/bundler)
* [Ruby初学者のRuby On Rails 環境構築【Mac】](https://qiita.com/TAByasu/items/47c6cfbeeafad39eda07)

その他、記事を書くにあたっていろいろなサイトをググりました。
間違って理解していることがありましたら、コメントいただけると正しい理解に深まるので、よろしくおねがいします。