「uru」を使って簡単に Ruby の複数のバージョン切り替えを実現する方法

## はじめに

### 説明
uru は、インストールされた複数の Ruby のバージョンを管理出来るツールです。
Ruby には rvm ( Ruby Version Manager ) や rbenv といったツールがよく利用されるみたいなのですが、Windows の場合はサポートされておりません。
（若干話はそれますが、WSL 上に Ruby の環境を構築すれば理論上は出来る様な気がしますが、未検証です）

しかし、バージョンを切り替えたいという時も必ずあると思うので、今回は uru を使って Ruby の複数のバージョンを管理・切り替えしていきたいと思います。

尚、Ruby 自体のインストール方法は割愛しますので、ご不明の方は、以前書いたこちらの記事をご確認ください。
「1. Ruby の Install」から「2. SQLite3 の Install」まで出来れば一旦は問題ないです。

https://qiita.com/good_engineer00/items/711a022c6234fc495724

**環境**
- Windows 11 home
- Ruby 3.1.3
- Ruby 3.1.2
- uru-0.8.5-windows-x86

**注意点**
uru のダウンロードですが、圧縮形式が 7zip になっていますので、7Zipファイルを解凍出来るようにする必要があります。（不明の場合は以下の ”**7-Zip公式のダウンロードページ”** より事前にダウンロードをお願いします）

- 公式サイト

https://7-zip.opensource.jp/download.html

- インストール手順

https://itojisan.xyz/アプリの知識/7-zipの使い方/


## 手順

### 1.  uru のインストール

1.1　[uru のダウンロードページ](https://bitbucket.org/jonforums/uru/wiki/Downloads) から、対象の OS の下にあるリンクテキストをクリックし、ダウンロードします。
![1.1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/89cef7df-ff3a-b6cc-e0a2-a9918215ce76.png)


1.2　ダウンロードが始まったら、左下に進捗状況などが表示されます。完了するまで待機です。（当方の環境だと数秒程度）
![1.2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/2168e56d-9c4b-75ad-f106-c55849fc545a.png)

1.3　ダウンロードが完了したら展開（解凍）します。「7-Zip」→「Extract files…（展開）」をクリックします。
![1.3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/924092c8-8232-44c7-25e1-90fde2be37d9.png)

1.4　「uru.exe」というファイルが出てきましたので、これを適当なフォルダに配置します。
![1.4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/4b944b00-b51c-cc52-4d8d-e130fac6b8ac.png)

1.5　当方の場合は、「C:\Ruby」の中に格納しました。余談ですが、Ruby のバージョンなどもここに管理しています。（この例だと、ruby3.1.2 / ruby3.1.3 ）
![1.5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/0bd9c9ef-dcae-659c-58e7-ca151ecabfce.png)

1.6　アドレスバーをクリックし「cmd」と入力後、Enter です。 
![1.6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3282990/ff641f92-fa41-7d58-86e8-dd691186633d.png)

1.7　コマンドプロンプトが立ち上がり、プロンプトより「 C:\Ruby> 」であることを確認します。（ uru_ry.exe を保存したディレクトリと同じ所）


```:コマンドプロンプト
Microsoft Windows [Version 10.0.22621.1702]
(c) Microsoft Corporation. All rights reserved.

C:\Ruby>
```

1.8　まず最初に uru のインストールをします。

- コマンド

```
uru_rt admin install
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru_rt admin install
---> Installing uru into C:\Ruby>

C:\Ruby>
```

1.9　dir コマンドにて、「uru.bat」と「uru.ps1」が追加された事を確認出来れば成功です。

- コマンド

```
dir
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>dir
 Volume in drive C is OS
 Volume Serial Number is 58B4-434E

 Directory of C:\Ruby

06/15/2023  11:48 PM    <DIR>          .
06/15/2023  10:54 PM    <DIR>          ruby3.1.2
06/15/2023  11:25 PM    <DIR>          ruby3.1.3
06/15/2023  10:40 PM               282 uru.bat
06/15/2023  10:40 PM               285 uru.ps1
03/10/2018  01:03 PM         1,878,016 uru_rt.exe
               3 File(s)      1,878,583 bytes
               3 Dir(s)  305,202,671,616 bytes free

C:\Ruby>
```

### 2. uru への事前登録とバージョン切り替え手順

2.1　最初に uru に Ruby の登録が必要ですので、「ruby3.1.2」と「ruby3.1.3」を uru に登録していきます。add の後は適宜ご自身の環境を確認していただき変更して下さい。

- コマンド

```
構文：uru admin add <ファイルパス>/bin

実行コマンド：uru admin add C:/Ruby/ruby3.1.2/bin
実行コマンド：uru admin add C:/Ruby/ruby3.1.3/bin
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru admin add C:/Ruby/ruby3.1.2/bin
---> Registered ruby at `C:\Ruby\ruby3.1.2\bin` as `313p185`

C:\Ruby>
C:\Ruby>uru admin add C:/Ruby/ruby3.1.3/bin
---> Registered ruby at `C:\Ruby\ruby3.1.3\bin` as `312p20`

C:\Ruby>
```

「registered ruby at ●● as 英数字」と表示されれば成功です。ここで、表示される英数字はバージョン切り替え時に使う ID のようなものになります。

2.2　項番「2.1」で2つのバージョンを登録したので、問題なく出来ているか確認します。

- コマンド

```
uru ls
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru ls
    312p20      : ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
    313p185     : ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x64-mingw-ucrt]

C:\Ruby>
```

2つ表示されていますね。ruby 3.1.2 の ID が 312p20、ruby 3.1.3 の ID が 313p185、となっています。

2.3　では、ruby 3.1.2 を使えるように切り替えていきます。

- コマンド

```
構文：uru <ID>

実行コマンド：uru 312p20
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru 312p20
---> now using ruby 3.1.2-p20 tagged as `312p20`

C:\Ruby>
```

2.4　切り替えられたか確認します。

- コマンド

```
uru ls
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru ls
 => 312p20      : ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
    313p185     : ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x64-mingw-ucrt]

C:\Ruby>
```

「 => 」というマークがつきましたね。これが現在選択されているバージョンという事です。

2.5　ruby --version にて、バージョンの確認をします。（ 3.1.2 と表示されれば成功です）

- コマンド

```
ruby --version
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>ruby --version
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]

C:\Ruby>
```

ここでもちゃんと切り替わっている事が確認できますね。

2.6　uby 3.1.2 ( id : 312p20 ) から、ruby 3.1.3（ id : 313p185 ）へ切り替えてみます。

- コマンド

```
構文：uru <ID>

実行コマンド：uru 313p185
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru 313p185
---> now using ruby 3.1.3-p185 tagged as `313p185`

C:\Ruby>
```

2.7　切り替えられたか確認します。

- コマンド

```
uru ls
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru ls
    312p20      : ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
 => 313p185     : ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x64-mingw-ucrt]

C:\Ruby>
```

「 => 」というマークが、” 312p20 “ から “ 313p185 “ へ変わりましたね；。

2.8　ruby --version にて、バージョンの確認をします。（ 3.1.3 と表示されれば成功です）

- コマンド

```
ruby --version
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>ruby --version
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x64-mingw-ucrt]

C:\Ruby>
```

ここでもちゃんと切り替わっている事が確認できますね。成功です。
これで、uru への登録や実際にバージョンの切り替えも問題なく出来るようになりました。

### 3. やった方が便利
uru に登録されている ID だと若干分かりにくかったので、この ID を自分が分かりやすいものに変更しましょう。

3.1　まずは、現在登録されている ID などを確認します。

- コマンド

```
uru ls
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru ls
 => 312p20      : ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
    313p185     : ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x64-mingw-ucrt]

C:\Ruby>
```

3.2　以下の様に、現在の ID と新しい ID を入力して変更します。

- コマンド

```
構文：uru admin retag <現在の ID > <新しい ID >

実行コマンド：uru admin retag 312p20 3.1.2
実行コマンド：uru admin retag 313p185 3.1.3
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru admin retag 312p20 3.1.2
---> retagged `312p20` to `3.1.2`

C:\Ruby>uru admin retag 313p185 3.1.3
---> retagged `313p185` to `3.1.3`

C:\Ruby>
```

3.3　ID が無事変わったか確認します。

- コマンド

```
uru ls
```

- 実行結果

```:コマンドプロンプト
C:\Ruby>uru ls
 => 3.1.2       : ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
    3.1.3       : ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x64-mingw-ucrt]

C:\Ruby>
```

2つとも ID が変わっている事が確認できましたので成功です。次からはこの ID を使ってバージョン切り替えが出来るようになります。

## まとめ

お疲れ様でした！

今回は 「uru」を使って簡単に Ruby の複数のバージョン切り替えを実現する方法について、まとめてみました。
バージョン切り替えが非常に楽なので、これからも uru は使っていこうと思います。

1つ注意点としては、一度でもプロンプトを閉じてしまうと、リセットされてしまうみたいなので、そこは気を付けましょう。（他にも注意点あれば是非コメントで教えて下さい。）

以上です。
ここまで見ていただき、ありがとうございました！