【问题标题】:How do RVM rubies find gems?RVM 红宝石如何找到宝石?
【发布时间】:2014-03-07 18:32:23
【问题描述】:

我在 Mac OS X (10.9.2) 上的 RVM 下使用 Ruby 1.8.6。我以本地用户(不是 root)的身份安装了所有东西,然后使用以下命令安装了 gem:

gem install gli -v 1.6

当我使用 require('gli') 运行 ruby​​ 时,出现错误:

in `require': no such file to load -- gli (LoadError)

即使gem list 显示gli (1.6.0)

我不确切知道 RVM 是如何处理其 gemsets 的,但在 $LOAD_PATH 的任何目录中都没有 gli.rb 文件。

RVM 如何与$LOAD_PATH 交互以在gemset 中找到必要的gem?

【问题讨论】:

  • 你确定你使用的是随 RVM 安装的 ruby​​ 吗?
  • 非常确定。 ruby --version 是 1.8.6,我的系统 ruby​​ 是 2.0.0。
  • $ which ruby 输出什么?
  • ~/.rvm/rubies/ruby-1.8.6-p420/bin/ruby

标签: ruby macos rubygems gem rvm


【解决方案1】:

尝试在源文件顶部添加require 'rubygems'。在 1.8 中,默认情况下不需要 ruby​​gems。

因此,关于宝石路径:

GEM_HOME 表示 gem 的安装位置。要找出适合您的情况,请执行以下操作:

$ echo $GEM_HOME

这应该会显示一个与 RVM 相关的路径,因为 RVM 会更改此环境变量以使 $ gem install 命令在其目录中安装 gem。

【讨论】:

  • 不应该 RVM 然后将 $GEM_HOME 添加到 ruby​​ $LOAD_PATH 吗? ruby 还应该如何知道在哪里可以找到已安装的 gem?
  • 不。 $LOAD_PATH$GEM_HOME 是两个不同的东西,它们都是由您安装的每个 ruby​​ 设置的,无论它来自 RVM 还是系统 ruby​​。
  • 所以我应该在调用 ruby​​ 时手动将 $GEM_HOME 添加到加载路径(例如,ruby -I"$GEM_HOME" script.rb)?
  • 在文件顶部添加require 'rubygems'
  • 看起来这是 Ruby 1.8 的特定要求:注意:对于 Ruby 1.8,您必须先要求 'rubygems',然后才能要求任何 gem (guides.rubygems.org/rubygems-basics)。
猜你喜欢
  • 1970-01-01
  • 2013-01-22
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多