Ruby Error[Your Ruby version is 2.6.3, but your Gemfile specified 2.6.5]

# Ruby Error[Your Ruby version is 2.6.3, but your Gemfile specified 2.6.5]
上記のエラーに引っ掛かったので記事にしました。
### 環境
macOS Catalina 10.15.3

## Rubyのversionを変えたくても変えられない。
<img width="561" alt="スクリーンショット 2020-02-06 23.09.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332582/ce67759e-0c29-620d-91f9-14134978ed68.png">

### rbenvの導入
[ここ](https://qiita.com/Alex_mht_code/items/d2db2eba17830e36a5f1)を参考にして、[rbenv](https://github.com/rbenv/rbenv)というRubyのversion管理ツールを導入した。

```terminal
$ brew install rbenv ruby-build
```

### .bash_profileへ記述
```.bash_profile
eval "$(rbenv init -)"
```
または

```terminal
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
```
### 初期化設定の反映
```terminal
$ source ~/.bash_profile
```

### 目的とするversionのRubyをinstall
```terminal
$ # install可能なversionを表示
$ rbenv install -l
$ # versionを指定してinstall
$ rbenv install 2.6.5
$ # インストールしたversionを使用可能な状態にする⇒shimsへの反映
$ rbenv rehash
```
[README.md](https://github.com/rbenv/rbenv#rbenv-rehash)上に、新しいversionをinstallした後に関して、
>Installs shims for all Ruby executables known to rbenv (i.e., ~/.rbenv/versions/*/bin/*). Run this command after you install a new version of Ruby, or install a gem that provides commands.

と記述があるので、shimsをinstallするためにrbenv rehashを行います。

### version切替
version切り替えに関して、[このような](https://github.com/rbenv/rbenv#rbenv-local)記述があったので、ひとまず現在のディレクトリ下のversionを切り替えるために以下のようなコマンドを実行します。

```terminal
$ rbenv local 2.6.5
```
もちろん[global用](https://github.com/rbenv/rbenv#rbenv-global)も用意されています。

### Current Directoryのversion確認
```terminal
$ rbenv versions
  system
* 2.6.5 (set by /Users/[user_name]/.rbenv/version)
```
2.6.5と表示されています！
目的のversionを手に入れることができた！と思いきや、、、

## 解決されたと思ったら、何故か同じエラーが繰り返される
<img width="561" alt="スクリーンショット 2020-02-06 23.09.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332582/ce67759e-0c29-620d-91f9-14134978ed68.png">
何故でしょう?

## 参照している場所が違うのではいか？
### bundlerの場所を調べる
```terminal
$ which bundler
/Users/hoge/.rbenv/shims/bundler
(hogeにはusernameが入る)
```
### 中身を確認
```terminal
$ cat /Users/hoge/.rbenv/shims/bundler

#!/usr/bin/env bash
set -e
[ -n "$RBENV_DEBUG" ] && set -x

program="${0##*/}"
if [ "$program" = "ruby" ]; then
  for arg; do
    case "$arg" in
    -e* | -- ) break ;;
    */* )
      if [ -f "$arg" ]; then
        export RBENV_DIR="${arg%/*}"
        break
      fi
      ;;
    esac
  done
fi

export RBENV_ROOT="/Users/hoge/.rbenv"
exec "/usr/local/Cellar/rbenv/1.1.2/libexec/rbenv" exec "$program" "$@"
(hogeにはusernameが入る)
```
間違っていなさそう。
他にも

```terminal
$ which ruby
$ which bundle
```
などと同様なことを確認したが、参照先に間違いはなさそうだった。

しかし、ここが原因だと指摘している[記事](https://qiita.com/kHigasa/items/2e9764e7e80d1bdd8186)もあった。
## 解決(たまたま)
たまたま以下のコマンドを打ち込んだら解決された。

```terminal
$ bundle install
```

## そもそもbundler, bundleとは
- bundler  
プロジェクト内で使うGemのパッケージ管理ツール。  
- bundle  
bundlerを扱うコマンド

## 結局のところ、なぜ解決されたのか
```terminal
$ bundle install
(省略)
Bundle complete! 5 Gemfile dependencies, 104 gems now installed.
Bundled gems are installed into `./vendor/bundle`
```
因みに上記のコマンドを実行することで、Gemfileをもとにgemをインストールすることができる。
上記のコマンドで解決されたわけだが、その訳は、rbenvと依存関係にあったパッケージがinstallされていなかったからではないか。と推測する。

しかし、[ここ](https://help.heroku.com/Q5ZF0DUO/ruby-build-fails-with-your-ruby-version-is-x-but-your-gemfile-specified-y)に
>This happens when there is a difference between the version of Ruby you are using locally, and the versions specified in your Gemfile and Gemfile.lock.

と書かれていることから、カレントディレクトリで使おうとしているrubyのversionとGemfileに記載されているrubyのversionが異なっていたことが原因だと考える。

試しにGemfileを見てみました。

```terminal
$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 3.0.3
  - RUBY VERSION: 2.6.5 (2019-10-01 patchlevel 114) [x86_64-darwin19]←確かに2.6.5になっている！！
  - INSTALLATION DIRECTORY: /Users/s09519/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
  - USER INSTALLATION DIRECTORY: /Users/s09519/.gem/ruby/2.6.0
  - RUBY EXECUTABLE: /Users/s09519/.rbenv/versions/2.6.5/bin/ruby
  - GIT EXECUTABLE: /usr/bin/git
  - EXECUTABLE DIRECTORY: /Users/s09519/.rbenv/versions/2.6.5/bin
  - SPEC CACHE DIRECTORY: /Users/s09519/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/s09519/.rbenv/versions/2.6.5/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-19
  - GEM PATHS:
     - /Users/s09519/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
     - /Users/s09519/.gem/ruby/2.6.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/s09519/.rbenv/versions/2.6.5/bin
     - /usr/local/Cellar/rbenv/1.1.2/libexec
     - /Users/s09519/.rbenv/shims
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
```

実行結果の3行目に書かれている通り、2.6.5と書かれていました。
自分がうっかり**$ rbenv lacal 2.6.5**する場所を間違えてしまったかもしれません。(記憶してなくて申し訳ないです)
## 参考
https://qiita.com/_am_/items/c1dbeb11f40bbbac8fd9
https://qiita.com/kHigasa/items/2e9764e7e80d1bdd8186
https://qiita.com/hisonl/items/162f70e612e8e96dba50