这是因为使用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
我知道这不是一个关键问题,我只是想知道。
答案 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版本。