ruby - 为什么 gems 安装在与我运行的 Ruby 版本不同的目录中?

标签 ruby rubygems

当我安装 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/

相关文章:

ruby-on-rails - Ruby on Rails 的 Facebook gem

ruby - 如何调用父类(super class)方法

ruby-on-rails - 以正确的方式从 ruby​​ on rails 执行查询

ruby-on-rails - 防止 rspec 输出服务器和数据库日志

ruby-on-rails - 如何从 RVM Ruby on Rails 中删除 gem?

ruby-on-rails - 覆盖 gem View 的合适方法是什么?

ruby-on-rails - rake 中止! rails 上的 ruby

ssl - 如何在 Ruby 1.9.3 上使用 hipchat-api 避免 SSL 错误?

ruby-on-rails - ruby on rails 网站上的 "blog tutorial"视频有多过时?

ruby-on-rails - ActionView::Template::Error (dyld: Library not loaded:/opt/local/lib/libssl.1.0.0.dylib