这是因为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。