ローカルサーバーが立ち上がらないエラー：Could not find 'bundler' (2.1.4) required by your の解消

# 概要

本件は過去記事２つの流れで、
Herokuにデプロイが完了し、`% heroku run db:migrate` 実施後本番環境での動作は確認したが、なぜか突如ローカルサーバーが立ち上がらなくなった話です。

【過去記事】
[Herokuへのデプロイができないエラー：Failed to install gems via Bundler. の改善。](https://qiita.com/Miyayan/items/fb71e39701e1b80bd09f)
[Herokuへのデプロイができないエラー：Could not detect rake tasks の改善。](https://qiita.com/Miyayan/items/082ec4a449fef9564e62)

おそらくこの段階で何かしらの環境構築が変更されたのでしょうか。ということが大前提にあります。

##### ！注意！
この解決には `sudoコマンド`を用います。
sudoコマンド・・・端的にいうと権限者を駆使した強行突破コマンド(この認識に間違いがあるという有識者の方遠慮なくご指摘いただけますと幸いです。)
自己責任での実施をお願いいたします。

# 経緯
railsアプリケーションのデプロイに成功しました。
そこでローカルサーバーでの動作確認を行おうと、

```
% rails s
```
でローカルサーバーを立ち上げると、

```
Could not find 'bundler' (2.1.4) required by your /Users/アプリケーションのディレクトリ/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
```
とエラーが発生し、サーバーが立ち上がりません。

#### せっかくデプロイまで完了したのにこの時点で涙目です。

ちなみにこのエラー、
##### <font color="Red">「Gemfile.lockにbundlerの記述が指定されてるけど、そんなものないで？」</font>
といったニュアンスのものです。
しかしながら、`% bundler -v`を実行すると、

```
Bundler version 2.1.4
```
と確かにあります。`% gem list | grep bundler`を実行しても、

```
bundler 2.1.4
```
### 確かにありますよね！？

# 仮説と試したこと
### ①bundle update
エラー文に則り、`bundle update --bundler`を試してみましたが、だめでした。
### ②Gemfile.lock削除。bundler2.1.4再インストール
ダメでした。

ここでGitを確認してみると、`changes`に何も反映されていませんでした。
あれれ、おかしいな・・・？
普通であればGemfile.lockが再構築されたのがコミットできるものだと思いましたが・・・。

# 解決方法

アプリケーションの他のファイルを操作すると、確かにGitの`changes`には反映されています。
となると、gemのインストール先がおかしいのでは、という仮設に至りました。

`% bundle install`実施後に最後に緑文字でこのような文面が現れています。

```
Bundled gems are installed into `./vendor/bundle`
```
`vendor`というディレクトリに、インストールされたGem達が格納されてい流のがわかります。

**<font color="Red">アプリケーションで読み込むBundler(Gem)が、違う場所に格納されているのでは？</font>**という仮説が上がりました。

となると、どれだけbundle installしても同じようなエラーは出るだろうし、Gitの`changes`にも反映されないのもこれのせいかもしれません。

そこでbundlerを管理も司る`rbenv`を再インストールすれば、あるいは・・・という仮説を教えていただきました。

`rbenv`についてはこちらの記事が参考になりました。
[rbenvの役割](https://qiita.com/souichirou/items/d4196faa0df9e4bacf17#:~:text=~%2F.rbenv%2F%E4%BB%A5%E4%B8%8B%E3%81%A7%E3%80%81,%E3%81%A6%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E3%80%82)

#### では、実践です.

```
% sudo cd . &&
brew uninstall rbenv ;     #rbenvのアンインストール
sudo rm -rf ~/.rbenv ;     #.rbenvファイルの削除
brew install rbenv ;       #Homebrewを用いてrbenvインストール
rbenv rehash ;             #rbenvリハッシュ
rbenv install 2.6.5 -v ;   #rbenv2.6.5インストール
rbenv global 2.6.5 ;       #環境全体のRubyバージョンを指定
rbenv rehash ;             #rbenvリハッシュ
gem install bundler ;      #bundlerインストール
rbenv rehash ;             #rbenvリハッシュ
gem install rails -v 6.0.0 ; #rails6.0.0インストール
rbenv rehash ;             #rbenvリ(以下略
rm -rf ~/.bundle/config ;  #configファイル削除
rm -rf .bundle/config ;    #同上
bundle config --global build.mysql2 --with-opt-dir="$(brew --prefix openssl)" ;   #OpenSSLにmysql２を格納？？ちょとうまく説明できませんすみません・・・。
```

これを実行するとパソコンのパスワードが求められます。
それを打ち込むと処理が始まります。（結構長いです。）

終了後、`% bundle install`実行後に再度サーバーを立ち上げると、
#### 解消されました！！
ローカル環境でもアプリは問題なく動いているようです。

# 考察

最後に`% which bundler`で場所を確認してみると、

```
/Users/ユーザー名/.rbenv/shims/bundler
```
と、`shims`というところに格納されているみたいですね。
ざっくりと考えると
### rbenv<bundler<gem
といったように、gemを一元管理しているのが`bundler`でさらにそれを管理しているのがrbenv(厳密にrbenvが管理しているのはrubyバージョン切り替えなど？)ということですかね。
bundlerとは何か、改めて調べるとこちらの記事が参考になりました。
[【Rails】結局bundlerって何？bundlerの仕組みを図解形式で徹底解説](https://pikawaka.com/rails/bundler)

gemがおかしいならbundler入れ直すなどしてエラー解消に努めて、
bundlerがおかしいのであれば、最終手段としてrbenvを入れ直す。

そんな考え方もあるというのが今回大きな収穫になりました。
正直初学者の私にとってsudoコマンドはあまり使いたくないのですが・・・(笑)

ただ今回の件は私自身かなり勉強になりました。
本当にエラーは腹立つけど楽しいですね。

##### ここまでご覧いただいた方、ありがとうございました。
##### 誰かの参考になれば幸いです。