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 + rubygems 环境。【参考方案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 [关闭]
pg gem 安装错误 - lion osx、bundler 和 rvm