为什么我们将Ruby 1.9.2 / 1.9.3 gems安装到1.9.1文件夹中?

时间:2011-12-19 16:20:35

标签: ruby rubygems

这是因为使用gem时看到的gem env命令使用的Gem安装目录设置为:

<base_ruby_dir>/lib/ruby/gems/1.9.1

我的问题是为什么?

不应该调用该文件夹:

<base_ruby_dir>/lib/ruby/gems/1.9.x

<base_ruby_dir>/lib/ruby/gems/1.9

或者每个版本的Ruby都没有,例如:

c:/ruby191/lib/ruby/gems/1.9.1
c:/ruby192/lib/ruby/gems/1.9.2
c:/ruby193/lib/ruby/gems/1.9.3

我知道这不是一个关键问题,我只是想知道。

2 个答案:

答案 0 :(得分:28)

在Ruby 1.9.0中,C接口已从Ruby 1.8系列更改。

编译为本机代码的Gems必须重新编译。

在Ruby 1.9.1中再次更改了界面,并在Ruby 1.9.2&amp;中保持相同。这解释了你在路上看到的1.9.1。

这个想法是你可以在你的系统上安装不同版本的Ruby,并且宝石将在具有相同C api的组中共享。所以Ruby 1.8.6和1.8.7可以分享他们的宝石,Ruby 1.9.1,.2和.3也可以。

但是,这不一定是最好的主意。在任何情况下,大多数人使用rvm访问不同版本的Ruby,rvm保持每个版本的宝石分开,无论C api版本如何。

答案 1 :(得分:0)

我认为这是因为这些版本应该是兼容的,如果你有单独的目录,你必须用它重新安装所有的宝石。通过这种方式,您无需重新安装所有宝石即可升级ruby版本。