Skip to main content
Jkyo Chen Blog

Rubyの世界でパッケージ管理は二つツールになる原因

パッケージ管理について、Node.jsとかGolangとか、Rustとか、一つツールで管理できる。

でもRubyはパッケージのインストール(gem)とパッケージの依存関係管理(bundle)、二つツールになりました。

初めてRubyを学びのとき、疑問がありました、どしてRubyは二つツールでパッケージ管理するか、一ついいじゃないか。

それで、最近もっと気になりました、調べました、ようやくわかりました。簡単に言うと、歴史の原因です、Rubyも古い言語になりました、Javaと同じ時代だ。

原因 #

2003年RubyGemsは一つパッケージのインストール上手くできるために作られました。プロジェクトのパッケージの依存関係管理の要望がないでした。

その後、gemを使いどんどん増えると、gemバージョンコンフリクト(version conflict)の問題が厳しになりました。

2009年Bundlerはパッケージの依存関係管理のために作られました。

その原因で、Rubyはパッケージ管理で二つツールになりました。

現状 #

今は、RubyGemsとBundlerは同じプロジェクトにマージになりましたけど、まだ別々のコマンドの状態です。

参考 #

RubyConf 2015 - How does Bundler work, anyway? by Andre Arko