为什么我们将Ruby 1.9.2 / 1.9.3 gem安装到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中保持不变。这就解释了你在path中看到的1.9.1。
这个想法是,你可以在你的系统上安装不同版本的Ruby,并且在具有相同C api的组中共享这些gem。 所以Ruby 1.8.6和1.8.7可以分享他们的gem,Ruby 1.9.1,.2和.3也是如此。
不过,这不一定是最好的主意。 在任何情况下,大多数人使用rvm
来访问不同版本的Ruby, rvm
保持每个版本的gem分离,而不pipeC api版本如何。
我认为这是因为这些版本应该兼容,如果你有单独的目录,你必须重新安装所有的gem。 这样你可以升级ruby的版本,而无需重新安装所有的gem。