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



这是因为gem命令使用的Gem安装目录(在使用gem env时看到)被设置为如下内容:

<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

我知道这不是一个重要的问题,我只是想知道。

在Ruby 1.9.0中,C接口与Ruby 1.8系列相比发生了变化。

编译成本机代码的gem必须重新编译。

接口在Ruby 1.9.1中再次更改,在Ruby 1.9.2中保持不变&3.这解释了您在路径中看到的1.9.1。

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

但这不一定是最好的主意。在任何情况下,大多数人使用rvm来访问不同版本的Ruby,而rvm将每个版本的gems分开,而不考虑C api版本。

我认为这是因为这些版本应该是兼容的,如果你有单独的目录,你就必须重新安装所有的gem。这样你就可以升级ruby的版本,而不必重新安装所有的gem。

最新更新