当我安装 gem 时,它会安装在名为 1.9.1 的目录中,尽管这不是我安装的 Ruby 版本:
$ ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0]
$ gem which rails
.../ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails.rb
为什么会这样?我没有安装其他 Ruby 版本(当然也没有安装 v1.9.1)。
最佳答案
请注意,以下内容也适用于撰写本文时所有后来的 Ruby 版本,而不仅仅是 1.9.2。
根据 1.9.2 release announcement :
Standard library is installed in
/usr/local/lib/ruby/1.9.1
This version is a "library compatible version." Ruby 1.9.2 is almost 1.9.1 compatible, so the library is installed in the 1.9.1 directory.
尽管它安装在不同编号的目录中,但它使用的是 1.9.2。 RubyGems 可以通过 gem env
显示它正在使用的所有目录。
这确保了一组已安装的 gem 仅供它们实际运行的版本使用(特别是由于编译的 C 扩展),并且当升级到更新但“库兼容”的版本时,一个不不必重新安装所有 gem。
关于ruby - 为什么 gems 安装在与我运行的 Ruby 版本不同的目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6352262/