Rubygems、Bundler 和 RVM 混淆

Posted

技术标签:

【中文标题】Rubygems、Bundler 和 RVM 混淆【英文标题】:Rubygems, Bundler and RVM confusion 【发布时间】:2011-06-03 23:52:14 【问题描述】:

我在再次询问之前阅读了“Relationships between Rubygems, Bundler, and RVM”。

嗯,有很多这样的问题,但回答的人说他们使用 Rubygems、RVM 和 Bundler,他们没有解释这些如何单独工作。

当我们安装 gems 时,我真的很困惑这三者是如何独立工作的。请不要告诉我你的工作方式,这会对我有所帮助,但我不会知道我们和他们一起玩时发生了什么。

我的困惑可以分解为这些问题。什么时候在哪里安装 gem:

    我只有 Rubygems(没有 RVM 或 Bundler)? Rubygems 和 RVM 是否已安装? Rubygems、RVM 和 Bundler 安装了吗?

请通过网络上的资源或您的详细回答帮助我理解这些内容。

【问题讨论】:

【参考方案1】:
    要了解 gem 的安装位置,请在终端中运行 echo $GEM_HOME。 使用 RVM 时,Gem 会安装到您的 RVM 安装中,因为它会更改 $GEM_HOME。现在运行 echo $GEM_HOME 将显示 RVM 安装的路径。 当 Bundler 添加到组合中时,gems 将安装在 $GEM_HOME 中,或者,如果您在运行时指定路径 bundle install 将安装到该路径。要通过 Bundler 找出 gem 的位置,您可以使用 bundle show gemname 获取其完整路径。

【讨论】:

fyi for #2 running 'rvm info' 也很有用 - 打印出当前正在使用的整个 ruby​​ + ruby​​gems 环境。【参考方案2】:

使用gem env 列出每个上下文中的 gem 路径。

没有 RVM gem env 会报告系统 gem 库路径。

使用 RVM gem env 将报告 RVM 管理的 gem 库路径。

Bundler 管理应用程序依赖项并安装到您环境中的 gem 库中。如果您使用的是 RVM + Bundler,gems 将安装在 RVM 管理的 gem 目录中。如果您在没有 RVM 的情况下使用它,bundler 将在系统 gem 目录中安装 gem。

【讨论】:

【参考方案3】:

要查找安装 gem 的路径,请使用:

gem which gem_name

要查找可执行文件(如 html2haml),请使用:

which executable_name

要避免键入 Bundler 团队推荐的 bundle exec html2haml,请使用我的 rubygems-bundler gem。

【讨论】:

【参考方案4】:

我也试图了解它是如何工作的。博客“Advice on using Ruby, RVM, Passenger, Rails, Bundler, … in development”帮助我更好地了解了概况。

顺便说一句,这是一篇法语文章的翻译,法语版本更好。

【讨论】:

以上是关于Rubygems、Bundler 和 RVM 混淆的主要内容,如果未能解决你的问题,请参考以下文章

bundler vs RVM vs gems vs RubyGems vs gemsets vs system ruby​​ [关闭]

通过 Bundler 安装 mysql2 gem 时出错

无法在ruby 1.8.7-p374中安装宝石

pg gem 安装错误 - lion osx、bundler 和 rvm

使用 Bundler 时,为啥要关心 RVM 的 Gemset 功能?

安装RVM时现有宝石会发生什么?