質問: Windows環境でRubyをInstallするにはRubyInstallerを使うのが一般的のようです。 説明書きには > > MSYS2 based RubyInstaller for Windows > > > とあります。 `ridk`コマンドの説明を見てもRubyのバージョン切り替え機能がある以外はmsys2に投げているように見えます。 ではRubyのバージョン切り替えを考えないとき、RubyInstallerは必要なのでしょうか?msys2のpacmanでもrubyは落とせます。これとの違いはなにかあるのでしょうか? 例えばmsys2 pacmanで入れたrubyではどうしても何かが実現できなくてRubyInstallerで入れたRubyでないと実装できないようなgemがありえたりするのでしょうか? 例えばmsys2のビルド方法となにか違う方法でビルドしているのでしょうか?msys2では にあるようにごく普通にconofigureしてmakeしています。 --- きっかけとしてはruby2dというgemをmsys2 pacmanで入れたRubyでrequireできないという問題があり、ruby2d公式チャットで問い合わせたところ RubyInstaller決め打ちをしていることがわかり、そういう決め打ちはするべきではないのではないかといったところ > > Ruby2D has RubyInstaller that's the issue I think > > Your system doesn't have the module for whatever reason... > > > と明瞭な答えを得られなかったので、スコープを広げてRubyのgem制作一般でRubyInstallerでないといけないなにか不都合があるのかな?と思ったわけです。
回答: #### 何をやっているか Windows(非msys2)環境でRubyを動かしつつ、一部gemのビルド時にはmsys2環境を呼び出すための色々ですね おまけで、sqlite3, glut, fxruby, openssl, mysql2あたりのgemをビルドする際に pacman操作なしに依存パッケージをインストールするための仕組みなども導入しています。 #### 当該コードの是非 msys2 rubyをサポート外にするのはライブラリ開発者の自由かと思います。 当該コードについては ``` if defined?(RubyInstaller) s2d_dll_path = Gem::Specification.find_by_name('ruby2d').gem_dir + '/assets/mingw/bin' RubyInstaller::Runtime.add_dll_directory(File.expand_path(s2d_dll_path)) end ``` の方が少しはマシかと思います。