macOSでのrubyバージョンアップ備忘

# 経緯
bundlerバージョンアップ時に、rubyのバージョンの問題で失敗したことでrubyのバージョンアップを行おうとしたのですが、少しハマってしまったので備忘として手順を残しておこうと思います。

```
% sudo gem update --system
Password:
Updating rubygems-update
Fetching rubygems-update-3.5.21.gem
ERROR:  Error installing rubygems-update:
        There are no versions of rubygems-update (= 3.5.21) compatible with your Ruby & RubyGems
        rubygems-update requires Ruby version >= 3.0.0. The current ruby version is 2.6.10.210.
ERROR:  While executing gem ... (NoMethodError)
    undefined method `version' for nil:NilClass
```

# 環境
- OS: macOS(15.0)
- ruby: 2.6.10p210(System Ruby)

# rubyバージョンアップ手順
以下記事を参考に、バージョンアップを行いました。
記事にもあるとおり、rbenvというツールでローカルのrubyのバージョンを適宜切り替えられるようなので、こちらのツールを使いrubyのバージョンアップを行う方針で対応します。

https://qiita.com/Ficus/items/bdef5c2b504d7a4008fb

基本的に、上記記事でrubyのバージョンアップはできるようですが、私はそれだけではバージョンが切り替わらなかったので、以降で追加の手順を説明します。

### rbenvで指定しているrubyのバージョンを確認
```
% rbenv versions 
* system
  3.1.6
```
上記コマンドで確認したとき、どうやら新しいバージョンのrubyはインストールできていたみたいですが、rbenvで指定しているrubyがmacOSのシステムRubyのままだったようでした。

以下コマンドでローカルにあるrubyを指定できるようなので、試したところ無事任意のバージョンを指定することができました。
```
% rbenv global 3.1.6
% rbenv rehash 
% rbenv versions    
  system
* 3.1.6 (set by /Users/user/.rbenv/version)
```

上記確認後、rubyのバージョンを確認してみます。
```
 % ruby -v
ruby 3.1.6p260 (2024-05-29 revision a777087be6) [arm64-darwin24]
```
バージョンアップデート完了です！

# 使用したコマンドについて
せっかくなので、以下使用したコマンドについても調べてみました。
- `rbenv global`
- `rbenv rehash`

### rbenv global
以下記事の説明を引用させてもらいます。
>システム全体で使う ruby のバージョンを指定する。
だが実は、 ~/.rbenv/version ファイルを書き出すだけのコマンド。

>rbenv は、まずカレントディレクトリの .ruby-version を見る。あればそれを使う。
>
>もし無ければ、ひとつ上のディレクトリの .ruby-version を見る。あればそれを使う。
これをホームディレクトリ ~/ にたどりつくまで繰り返す。
>
>ホームディレクトリまで辿っても .ruby-version がなければ、 ~/rbenv/version を見る。あればそれを使う。
>
>つまり、ホームディレクトリに .ruby-version を作ってしまうと、global はどこからも参照されなくなる。

https://qiita.com/Yinaura/items/0b021984bb21ae77816d

説明を見る限り、こいつがrubyのバージョンを指定しているやつのようです。
`rbenv rehash`てもしかして必要なかったのかなと思い始めました、、
続いて`rbenv rehash`について調べてみます。

### rbenv rehash
またもや参考になる記事があったので、以下記事の説明を引用させてもらいます。
>rbenv rehash コマンドを実行すると、大まかには ~/.rbenv/versions/*/bin/ 以下のファイルを ~/.rbenv/shims/ 以下にコピーする。
>
>なぜコピーする必要があるかというと、通常PATHが通っているのは ~/.rbenv/shims 以下となっているからで、ここにコピーしないと rspec とか rubocop といったGemが提供するコマンドを実行できないからである。

https://mogulla3.tech/articles/2020-12-29-01/

説明を見たところ、インストールしているrubyの`bin/`以下をPATHが通っているところに配置する感じのようなので、新しくインストールしtバージョンのrubyを使用する前には必要になりそうです。

# おわり
これで元々目的だったbundlerの更新も行えました！

```
% sudo bundle update --bundler        
Password:
Fetching gem metadata from https://rubygems.org/.
Updating bundler to 2.5.21.
Fetching bundler 2.5.21
Installing bundler 2.5.21
Fetching gem metadata from https://rubygems.org/........
Resolving dependencies...
Fetching rake 13.2.1
Installing rake 13.2.1
Fetching base64 0.2.0
Fetching rexml 3.3.7
Fetching public_suffix 6.0.1
Fetching artifactory 3.0.17
Fetching atomos 0.1.3
Fetching aws-eventstream 1.3.0
Fetching aws-partitions 1.973.0
Fetching nkf 0.1.3
Installing base64 0.2.0
Fetching jmespath 1.6.2
Installing rexml 3.3.7
Installing public_suffix 6.0.1
Fetching babosa 1.0.4
Installing artifactory 3.0.17
Installing atomos 0.1.3
Fetching claide 1.1.0
Fetching colored 1.2
Installing aws-eventstream 1.3.0
Fetching colored2 3.1.2
Fetching highline 2.0.3
Installing aws-partitions 1.973.0
Installing jmespath 1.6.2
Fetching declarative 0.0.20
Installing nkf 0.1.3 with native extensions
Installing babosa 1.0.4
Fetching digest-crc 0.6.5
Installing claide 1.1.0
Installing colored 1.2
Fetching domain_name 0.6.20240107
Fetching dotenv 2.8.1
Installing colored2 3.1.2
Fetching emoji_regex 3.2.3
Fetching excon 0.111.0
Installing highline 2.0.3
Installing declarative 0.0.20
Fetching faraday-em_http 1.0.0
Installing digest-crc 0.6.5 with native extensions
Fetching faraday-em_synchrony 1.0.0
Installing domain_name 0.6.20240107
Installing dotenv 2.8.1
Fetching faraday-excon 1.1.0
Installing emoji_regex 3.2.3
Fetching faraday-httpclient 1.0.1
Fetching multipart-post 2.4.1
Installing excon 0.111.0
Installing faraday-em_http 1.0.0
Fetching faraday-net_http 1.0.2
Installing faraday-em_synchrony 1.0.0
Fetching faraday-net_http_persistent 1.2.0
Installing faraday-net_http 1.0.2
Fetching faraday-patron 1.0.0
Fetching faraday-rack 1.0.0
Installing faraday-httpclient 1.0.1
Fetching faraday-retry 1.0.3
Installing multipart-post 2.4.1
Installing faraday-excon 1.1.0
Installing faraday-net_http_persistent 1.2.0
Installing faraday-patron 1.0.0
Fetching ruby2_keywords 0.0.5
Fetching fastimage 2.3.1
Fetching gh_inspector 1.1.3
Installing faraday-rack 1.0.0
Installing faraday-retry 1.0.3
Fetching multi_json 1.15.0
Fetching os 1.1.4
Fetching httpclient 2.8.3
Installing ruby2_keywords 0.0.5
Fetching mini_mime 1.1.5
Installing fastimage 2.3.1
Fetching trailblazer-option 0.1.2
Installing gh_inspector 1.1.3
Fetching uber 0.1.0
Installing multi_json 1.15.0
Fetching retriable 3.1.2
Installing os 1.1.4
Fetching google-cloud-errors 1.4.0
Installing httpclient 2.8.3
Installing mini_mime 1.1.5
Fetching json 2.7.1
Fetching mini_magick 4.13.2
Installing trailblazer-option 0.1.2
Fetching naturally 2.2.1
Installing uber 0.1.0
Fetching optparse 0.4.0
Installing retriable 3.1.2
Fetching plist 3.7.1
Installing google-cloud-errors 1.4.0
Fetching rubyzip 2.3.2
Installing json 2.7.1 with native extensions
Installing mini_magick 4.13.2
Installing naturally 2.2.1
Installing optparse 0.4.0
Installing plist 3.7.1
Fetching security 0.1.5
Fetching terminal-notifier 2.0.0
Installing rubyzip 2.3.2
Fetching unicode-display_width 2.5.0
Installing security 0.1.5
Fetching tty-screen 0.8.2
Installing unicode-display_width 2.5.0
Fetching tty-cursor 0.7.1
Installing tty-screen 0.8.2
Installing tty-cursor 0.7.1
Fetching word_wrap 1.0.0
Fetching nanaimo 0.3.0
Fetching rouge 2.0.7
Fetching jwt 2.8.2
Installing word_wrap 1.0.0
Installing nanaimo 0.3.0
Installing terminal-notifier 2.0.0
Fetching addressable 2.8.7
Installing jwt 2.8.2
Installing addressable 2.8.7
Fetching aws-sigv4 1.9.1
Installing rouge 2.0.7
Installing aws-sigv4 1.9.1
Fetching commander 4.6.0
Fetching http-cookie 1.0.7
Fetching faraday-multipart 1.0.4
Installing commander 4.6.0
Installing http-cookie 1.0.7
Installing faraday-multipart 1.0.4
Fetching representable 3.2.0
Fetching terminal-table 3.0.2
Fetching tty-spinner 0.9.3
Installing representable 3.2.0
Installing terminal-table 3.0.2
Installing tty-spinner 0.9.3
Fetching aws-sdk-core 3.204.0
Fetching faraday 1.10.3
Installing faraday 1.10.3
Installing aws-sdk-core 3.204.0
Fetching faraday-cookie_jar 0.0.7
Fetching faraday_middleware 1.2.0
Fetching signet 0.19.0
Installing faraday-cookie_jar 0.0.7
Installing faraday_middleware 1.2.0
Installing signet 0.19.0
Fetching google-cloud-env 1.6.0
Installing google-cloud-env 1.6.0
Fetching googleauth 1.8.1
Fetching google-cloud-core 1.7.1
Installing googleauth 1.8.1
Installing google-cloud-core 1.7.1
Fetching xcpretty 0.3.0
Fetching google-apis-core 0.11.3
Installing xcpretty 0.3.0
Installing google-apis-core 0.11.3
Fetching google-apis-androidpublisher_v3 0.54.0
Fetching google-apis-playcustomapp_v1 0.13.0
Fetching google-apis-iamcredentials_v1 0.17.0
Installing google-apis-androidpublisher_v3 0.54.0
Installing google-apis-playcustomapp_v1 0.13.0
Installing google-apis-iamcredentials_v1 0.17.0
Fetching google-apis-storage_v1 0.31.0
Installing google-apis-storage_v1 0.31.0
Fetching xcpretty-travis-formatter 1.0.1
Fetching aws-sdk-kms 1.90.0
Installing xcpretty-travis-formatter 1.0.1
Installing aws-sdk-kms 1.90.0
Fetching aws-sdk-s3 1.161.0
Installing aws-sdk-s3 1.161.0
Fetching CFPropertyList 3.0.7
Installing CFPropertyList 3.0.7
Fetching simctl 1.6.10
Fetching xcodeproj 1.25.0
Installing simctl 1.6.10
Installing xcodeproj 1.25.0
Fetching google-cloud-storage 1.47.0
Installing google-cloud-storage 1.47.0
Fetching fastlane 2.222.0
Installing fastlane 2.222.0
Bundle updated!
Post-install message from rubyzip:
RubyZip 3.0 is coming!
**********************

The public API of some Rubyzip classes has been modernized to use named
parameters for optional arguments. Please check your usage of the
following classes:
  * `Zip::File`
  * `Zip::Entry`
  * `Zip::InputStream`
  * `Zip::OutputStream`

Please ensure that your Gemfiles and .gemspecs are suitably restrictive
to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
See https://github.com/rubyzip/rubyzip for details. The Changelog also
lists other enhancements and bugfixes that have been implemented since
version 2.3.0.
```