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/33326969/

相关文章:

ruby-on-rails - 运行 bundle install 时导致未定义方法 `dir_mode=' 的原因

macos - 在 Snow Leopard 上安装一些 gem 时出错 - libxml2

ruby-on-rails - 如何找出以相同单词开头的键?

ruby - 如何在 Ruby 中使用 max_by 和 with_index?

ruby-on-rails - 当我激活 ruby​​ 2.2.1 时,无法在 WSL 中的 Ubuntu 上安装 Rails 版本 4.2.5。 nokogiri 需要 Ruby 版本 >= 2.3.0

ruby-on-rails - 如何在 Rails 应用程序中覆盖 gem 生成器模板

iOS 相当于 Ruby VCR Cassettes/recording server http response iOS

ruby:使用 block 作为普通(内联)表达式?

javascript - Rails, "respond_to do |format|"返回 ActionController::UnknownFormat

ruby - 奇怪的 ruby 语法