There are no versions of nokogiri (~> 1.14) compatible with your Ruby & RubyGems.

Railsに挑戦しようと、かの有名な[Ruby on Railsチュートリアル](https://railstutorial.jp/)に挑戦することにした。
その際に、最初のRailsのインストールで表題のエラーで躓いたので、備忘録としてこちらを執筆。

まずは下記のコマンドでRailsをバージョン指定でインストールしろとのこと。

```
gem install rails -v 7.0.4.3
```

上記のコマンドを実行したが、下記のエラーに遭遇。

```
Fetching nokogiri-1.16.4-x86_64-darwin.gem
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
```

`sudo`をつけて回避しようと試みる。

```
sudo gem install rails -v 7.0.4.3
```

ところが、次は下記のエラーに遭遇。

```
ERROR:  Error installing rails:
	    There are no versions of nokogiri (~> 1.14) compatible with your Ruby & RubyGems. Maybe try installing an older version of the gem you're looking for?
	    nokogiri requires Ruby version >= 3.0, < 3.4.dev. The current ruby version is 2.6.10.210.
 ```

 最後の1行で、自分のPCに現在インストールされているRubyにバージョンが古すぎることが判明する。

 ```
nokogiri requires Ruby version >= 3.0, < 3.4.dev. The current ruby version is 2.6.10.210.
 ```

 なので、rubyのバージョンを3.0以上に上げることとする。

ググったところ、rubyをバージョン指定してインストールする方法に`rbenv`なるものがあるらしいので、こちらを採用する。（詳しくは[こちら](https://www.techpit.jp/courses/32/curriculums/33/sections/278/parts/940)を参照。）

`rbenv -l`コマンドでインストールできるrubyのバージョンを表示させたところ、複数個のバージョンが存在した。

```
$ rbenv install -l
3.0.6
3.1.4
3.2.3
3.3.0
```

何も考えず（）に最も数字が大きいバージョンをインストールする。

```
$ rbenv install 3.3.0
ruby-build: using openssl@3 from homebrew
==> Downloading ruby-3.3.0.tar.gz...

（中略）

Installed ruby-3.3.0 to /Users/(わしのユーザー名)/.rbenv/versions/3.3.0

NOTE: to activate this Ruby version as the new default, run: rbenv global 3.3.0
```

今インストールしたバージョンをRubyのデフォルトに設定したいので、下記を実行。

```
rbenv global 3.3.0
```

ここで、`ruby -v`コマンドを実行してrubyのバージョン確認を行ったところ、下記が表示。

```
$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin23]
```

おやおや、3.3.0をインストールしたつもりだったが、rubyのバージョンが変わっていないじゃないか。

そこで、今度は`rbenv global 変わらない`で検索（入力途中でサジェストされたため、同様のポイントで詰まっている人が他にも多数いる模様）。

下記のQiita記事に辿り着き、「解決策」という見出しにあるコマンドを実行。

https://qiita.com/akatsuki174/items/c0384b9903b4b5cbbdaf#解決策

結論、下記のコマンドを実行することで自分は解決。

```
$ source ~/.bash_profile
```

これを実行したあと、実際に`ruby --version`を実行したところ、無事に下記を得ることができた。

```
$ ruby --version
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin23]
```

ruby自身のバージョンを上げることができたため、再度Railsのインストールを試みる。

```
sudo gem install rails -v 7.0.4.3
```

その結果が下記。

```
sudo gem install rails -v 7.0.4.3

（中略）

Successfully installed actioncable-7.0.4.3
Successfully installed rails-7.0.4.3
36 gems installed

A new release of RubyGems is available: 3.5.3 → 3.5.7!
Run `gem update --system 3.5.7` to update your installation.
```

なにやら最後にRubyGemsのバージョンアップを支持されているので、こちらもそのまま実行。

```
$ gem update --system 3.5.7
Updating rubygems-update
Fetching rubygems-update-3.5.7.gem
Successfully installed rubygems-update-3.5.7

（中略）

RubyGems installed the following executables:
	/Users/tomoyasusunagawa/.rbenv/versions/3.3.0/bin/gem
	/Users/tomoyasusunagawa/.rbenv/versions/3.3.0/bin/bundle
	/Users/tomoyasusunagawa/.rbenv/versions/3.3.0/bin/bundler

RubyGems system software updated
```

再度、Railsのインストールを試みる。

```
$ sudo gem install rails -v 7.0.4.3
Successfully installed rails-7.0.4.3
1 gem installed
```

ここで、インストールしたrailsのバージョンを確認しようと`rails -v`コマンドを実行したところ、下記が表示。

```
$ rails -v
Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.
```

おやおや、`sudo gem install rails`コマンドは直前で叩いているじゃないか。

一応念のため、もう一回言われたコマンドを実行してみる。

```
$ sudo gem install rails -v 7.0.4.3
Successfully installed rails-7.0.4.3
1 gem installed

$ rails -v
Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.
```

なんだこれ、無限に同じ場所の繰り返しじゃないか、、、。

そう思いこれもググってみたところ、この件についても先輩がすでに対処されていた。

参考にしたのは下記のQiita記事。

https://qiita.com/amuyikam/items/313bc89c1de320a4257e

この記事中の[tl;dr](https://qiita.com/amuyikam/items/313bc89c1de320a4257e#tldr)にあった下記にコマンドを何も考えずに実行。

```
$ hash -r

```

うん、何も表示されない。

この状態でrailsのバージョンを確認したところ、無事にバージョンが表示された。

```
$ rails -v
Rails 7.0.4.3
```

正直、`hash -r`コマンドの意味は全く分かっていない。
詳細を知りたい方は、先ほどのQiita記事を参照してみてほしい。