【问题标题】:I'm using rbenv, so why are there two Gem paths on my system? (OS X Lion)我正在使用 rbenv,那么为什么我的系统上有两个 Gem 路径? (OS X 狮子)
【发布时间】:2012-05-13 00:46:45
【问题描述】:

为了澄清,我正在使用rbenv 来管理我的 ruby​​ 版本。我的印象是二进制文件在其各自的 ruby​​ 版本目录中以shims 的形式进行管理。

这是我运行 gem 环境时系统显示的内容(我排除了不相关的部分):

 - GEM PATHS:
     - /Volumes/Data/nathan/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1
     - /Volumes/Data/nathan/.gem/ruby/1.9.1

有两个地点的任何理由?好奇的人想知道。

【问题讨论】:

    标签: ruby rubygems rbenv


    【解决方案1】:

    请记住,像 rbenv 和 rvm 这样的 ruby​​ 版本管理器是相对较新的作品。在它们存在之前,管理员用户通常会将 ruby​​ 安装在系统范围的位置,例如 /usr/local。但是非管理员需要一个地方来安装他们自己的 gem,因为他们在 /usr/local 下没有写权限。因此 ruby​​gems 创建者决定在当前用户的主目录中添加一个辅助 gem 路径,该路径的结构与系统位置相似。

    以下是过去 gem 路径的示例:

     - /usr/local/lib/ruby/gems/1.9.1
     - /Users/kelvin/.gem/ruby/1.9.1
    

    可能仍然有这样安装 ruby​​ 的机器,并且您仍然可以使用自动辅助 gem 路径。当然,您也可以使用 GEM_PATH 环境变量添加更多路径,但自动路径非常适合处理常见情况。

    如果你有管理员权限,或者你使用版本管理器,你可以忽略 ~/.gem 目录作为工件,如果你愿意的话,它是过去的遗物。

    【讨论】:

      【解决方案2】:

      我想我已经找到了这个问题的答案,所以我会发布它。

      Rbenv 允许使用全局和/或本地版本的 ruby​​。因此,一旦通过 rbenv 安装和管理 ruby​​,您就可以将其声明为整个系统使用的全局 ruby​​ 版本。

      同样,您可以在给定目录(例如:特定的 rails 项目)中声明本地 ruby​​ 版本。

      全局 ruby​​ 版本使用主路径中的 .gem 文件,而本地 ruby​​ 版本使用隐藏在 rbenv 目录中的文件。

      注意,您可以(无论出于何种原因)声明一个与全局版本相同的本地版本。在这种情况下,本地版本将依赖于更深的 rbenv 目录中的 gem 文件,而不是 ~/.gem 目录。

      【讨论】:

      • 我使用gem which %gemname% 来确定gem 的安装路径。
      【解决方案3】:
       - /Volumes/Data/nathan/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1
      

      来自 rbenv,因此 ruby​​ 会查找已安装的 gems rbenv。

       - /Volumes/Data/nathan/.gem/ruby/1.9.1
      

      显然,rbenv 并不局限于自己的 gem,而是包括系统 ruby​​ 中的 gem,但仅限于以用户身份安装的 gem(通过 gem --user-install)。

      【讨论】:

      • 嗯,就是这样...我没有那样安装任何 gem。我做了一个干净的操作系统安装,安装了 homebrew > rbenv > ruby​​ > rails。在安装 rails 之前,我还立即通过 rbenv 设置了全局 ruby​​。在我的 rails 项目中,我使用了 bundler 和 Gemfile。所以...我只是不明白为什么后一个目录存在。
      • 你的意思是?回声 $GEM_PATH?它什么也不返回。
      猜你喜欢
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      相关资源
      最近更新 更多