概要
RubyInstaller でインストールした Ruby のバージョンが ridk use
で切り替えられないという問題を,インストールしてある Ruby の情報を手動で rubies.yml
に書いて解決した.
詳細
私の端末には RubyInstaller によって Ruby 2.5.5 と Ruby 2.6.3 がインストールしてある.ridk use
は,RubyInstaller 2.6.0-1 から実装されたバージョン切り替えのためのコマンドである.しかし,ridk use
を実行しても
C:\Users\ユーザー名>ridk use
Select ruby version to enable:
となってしまう.本来ならば次のように表示されるはずである.
C:\Users\ユーザー名>ridk use
1 - C:/Ruby25-x64 ruby 2.5.5p157 (2019-03-15 revision 67260) [x64-mingw32]
2 - C:/Ruby26-x64 ruby 2.6.3p62 (2019-04-16 revision 67580) [x64-mingw32]
Select ruby version to enable:
また,ridk use list
を実行しても何も表示されない.
C:\Users\ユーザー名>ridk use list
C:\Users\ユーザー名>
この問題の解決方法を模索した結果,RubyInstallerのridk useコマンドメモ (for Windows) によれば
ridk use
コマンドは切り替え対象の Ruby のリストをレジストリから取得しますが、rubies.yml
があればこのファイルを優先します。
とのことなので,rubies.yml
を手動で編集することで解決を試みた.以下,その手順を述べる.
rubies.yml を作成する
ridk use update
を実行して rubies.yml
を作成する.いま,Ruby のバージョンは 2.6.3 になっているので C:/Ruby26-x64/ridk_use
に作成される.
C:\Users\ユーザー名>ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x64-mingw32]
C:\Users\ユーザー名>ridk use update
Update C:/Ruby26-x64/ridk_use/rubies.yml
rubies.yml を編集する
適当なエディタで rubies.yml
を開くと次のようになっている.Ruby のバージョンはひとつも認識されていない.
--- []
これを次のように書き換える.もちろん,他のバージョンがインストールされている場合はそれも加える.
---
- C:\Ruby25-x64
- C:\Ruby26-x64
ridk use を実行してみる
rubies.yml
が編集できたので,再び ridk use
を使ってみる.
C:\Users\ユーザー名>ridk use list
1 - C:/Ruby25-x64 ruby 2.5.5p157 (2019-03-15 revision 67260) [x64-mingw32]
2 - C:/Ruby26-x64 ruby 2.6.3p62 (2019-04-16 revision 67580) [x64-mingw32]
C:\Users\ユーザー名>ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x64-mingw32]
C:\Users\ユーザー名>ridk use
1 - C:/Ruby25-x64 ruby 2.5.5p157 (2019-03-15 revision 67260) [x64-mingw32]
2 - C:/Ruby26-x64 ruby 2.6.3p62 (2019-04-16 revision 67580) [x64-mingw32]
Select ruby version to enable: 1
Disable C:/Ruby26-x64
Enable C:/Ruby25-x64
C:\Users\ユーザー名>ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [x64-mingw32]
無事に Ruby のバージョンを切り替えることができた.
最後に
結局,ridk use
がなぜ機能しなかったのかはわかっていない.レジストリには RubyInstaller の情報がちゃんと書き込まれているので,レジストリの情報を取りにいく段階で何かしらのエラーが起こっているのかもしれない.