【Ruby】Homebrewを使用したRubyのインストール

# Homebrewのインストール

## ほんとに入っていないよね？の確認

ターミナルで`brew -v`を実行した時に、「**コマンドが見つからない**」とエラーが出てきたら、Homebrewがインストールされていないということです。

```sh
% brew -v
zsh: command not found: brew
```

## Homebrewのインストール

以下のサイトにアクセスして、表示されているコマンドをコピーします。

https://brew.sh/ja/

これをターミナルに貼り付けて実行します。

```
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

パスワードが求められるので、Macにログインしているユーザのパスワードを入力してEnterを押下します。

```sh
==> Checking for `sudo` access (which may request your password)...
Password: ###Macにログインしているユーザのパスワード
```

しばらくすると、`RETURN/ENTER`を求められるので、Enterを押下します。

```sh
Press RETURN/ENTER to continue or any other key to abort:
```

しばらくするとインストールが終わります。
ただし、ここで終わりではありません。

処理の最後に以下のような出力があるはずです。

```sh
==> Next steps:
- Run these commands in your terminal to add Homebrew to your PATH:
    echo >> /Users/testuser/.zprofile
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/testuser/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh
```

ここに記載されている`echo`コマンド2つと`eval`コマンド1つを順に実行していきます。

```sh
% echo >> /Users/testuser/.zprofile
```

何も出力されません。

```sh
% echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/testuser/.zprofile
```

何も出力されません。

```sh
eval "$(/opt/homebrew/bin/brew shellenv)"
```

何も出力されません。

3つとも何も結果が出力されないので不安になりますが、ちゃんと実行されています。

では、最初と同じコマンドを叩いてみましょう。

```sh
% brew -v
Homebrew 4.4.32
```

Homebrewがインストールできました。

# rbenvのインストール

`rbenv`とは`rb`の`env`。つまり、`Ruby`の`Environment`を管理するツールのことです。

以下のコマンドを実行して`rbenv`をインストールします。

```sh
% brew install rbenv
```

処理が終わったら、以下のコマンドを実行します。

```sh
% rbenv --version
rbenv 1.3.2
```

バージョン情報が出ていれば`rbenv`のインストールは完了です。

# rbenvにパスを通す

最初に`brew -v`コマンドを叩いた時に、以下のように出てきた人は、`zsh`というシェルスクリプトが使われています。

```sh
zsh: command not found: brew
```

また、以下のように出てきた人は、`bash`というシェルスクリプトが使われています。

```sh
bash: command not found: brew
```

本当かどうか自分の目で確かめたい場合は、ターミナルで以下のコマンドを実行してください。

```sh
% ls -la
```

実行結果に`.zshrc`が含まれていた場合は`zsh`、`.bash_profile`が含まれていた場合は`bash`です。

## zshの場合

自分は`zsh`だったので、以下のコマンドを実行します。

```sh
% echo 'export RBENV_ROOT="$HOME/.rbenv"' >> ~/.zshrc
```

```sh
% echo 'export RBENV_ROOT="$HOME/.rbenv"' >> ~/.zshrc
```

```sh
% echo 'eval "$(rbenv init -)"' >>  ~/.zshrc
```

```sh
% source ~/.zshrc
```

これらのコマンドは実行しても結果が返ってきません。

## bashの場合

```sh
% echo 'export RBENV_ROOT="$HOME/.rbenv"' >> ~/.bash_profile
```

```sh
% echo 'export RBENV_ROOT="$HOME/.rbenv"' >> ~/.bash_profile
```

```sh
% echo 'eval "$(rbenv init -)"' >>  ~/.bash_profile
```

```sh
% source ~/.bash_profile
```

これらのコマンドは実行しても結果が返ってきません。

# Rubyのインストール

ターミナルでインストール可能なRubyのバージョンを確認します。

```sh
% rbenv install --list
3.1.7
3.2.8
3.3.8
3.4.3
jruby-10.0.0.0
mruby-3.3.0
picoruby-3.0.0
truffleruby-24.2.0
truffleruby+graalvm-24.2.0

Only latest stable releases for each Ruby implementation are shown.
Use `rbenv install --list-all' to show all local versions.
```

数字だけ書いてあるものがRubyです。`mruby`や`picoruby`もRubyですが、ちょっと毛色の違うRubyです。

せっかくなので、最新版をインストールしましょう。

```sh
% rbenv install 3.4.3
```

インストール処理が始まるので、待ちます。
以下のように出てきていたらインストール完了です。

```sh
==> Installed ruby-3.4.3 to /Users/testuser/.rbenv/versions/3.4.3
```

ただし、インストールしたRubyを使用するには、一つ設定を行う必要があります。
試しに、ターミナルでRubyのバージョンを確認してみましょう。

```sh
% ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin24]
```

あれ。2.6.10になってるなぁ。

これは罠ですね。インストール処理の最後に、以下のような記述があると思います。

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

これに従ってみましょう。

```sh
% rbenv global 3.4.3
```

もう一回、Rubyのバージョンを確認してみましょう。

```sh
% ruby -v           
ruby 3.4.3 (2025-04-14 revision d0b7e5b6a0) +PRISM [arm64-darwin24]
```

変わった！

## rbenv globalを実行しても変わらない場合

以下のコマンドを実行してみてください。

```sh
% rbenv versions
  system
* 3.4.3 (set by /Users/testuser/.rbenv/version)
```

3.4.3がインストールされていればインストールはできています。あとは適用するだけ。

もしかしたらパスが通っていないかもしれないので、以下を実行してみましょう。

```sh
% source ~/.zshrc
```

んでもう一回、`rbenv global 3.4.3`を実行してみましょう。

これで大抵の場合はちゃんと適用されるはずです！

変わらない場合、`.zshrc`や`.bash_profile`周りが間違っている可能性があるので、見直してみましょう。

以上