为什么gems安装在与I’;不同的Ruby版本的目录中;我在跑步?

为什么gems安装在与I’;不同的Ruby版本的目录中;我在跑步?,ruby,rubygems,Ruby,Rubygems,当我安装gem时,它会安装在名为1.9.1的目录中,尽管它不是我安装的Ruby版本: $ ruby -v ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0] $ gem which rails .../ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails.rb 为什么会发生这种情况?我没有安装其他Ruby版本(当然不是v1.9.1)。我相信这是因为它们共享同一个标准库 在1.9

当我安装gem时,它会安装在名为1.9.1的目录中,尽管它不是我安装的Ruby版本:

$ ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0]

$ gem which rails
.../ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails.rb

为什么会发生这种情况?我没有安装其他Ruby版本(当然不是v1.9.1)。

我相信这是因为它们共享同一个标准库


在1.9.2内核中有一些重要的升级,但我认为标准库中没有任何改变,因此它们共享相同的路径。不过,这没什么好担心的——正如您所说,一切都很好。

注意,以下内容也适用于本文所述的所有更高版本的Ruby,而不仅仅是1.9.2


根据:

标准库安装在
/usr/local/lib/ruby/1.9.1

这个版本是“与库兼容的版本”。Ruby 1.9.2几乎与1.9.1兼容,因此库安装在1.9.1目录中

尽管它安装在不同编号的目录中,但它使用的是1.9.2。RubyGems可以通过
gem env
显示它使用的所有目录


这确保了一组已安装的gems仅由它们可以实际运行的版本使用(特别是由于编译的C扩展),并且当升级到更新但“与库兼容”的版本时,不必重新安装所有gems。

我正在寻找该链接。我知道我以前读过一些关于它的东西,但不记得在哪里。