2011-01-05 99 views
63

在再次提问之前,我读“Relationships between Rubygems, Bundler, and RVM”。Rubygems,Bundler和RVM混淆

好吧,有很多这样的问题,但回答的人说他们使用Rubygems,RVM和Bundler,他们没有解释每个工作是如何独立工作的。

当我们安装宝石时,我非常困惑三个人如何独立工作。请不要告诉我你是如何工作的,这对我会有所帮助,但是当我们和他们一起玩时,我不会知道发生了什么。

我的困惑可以分解成这些问题。哪里有安装宝石的时候:

  1. 我只有Rubygems(没有RVM或Bundler)?
  2. Rubygems和RVM的安装?
  3. Rubygems,RVM和Bundler是否安装?

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

回答

38
  1. 要找出正在安装宝石的位置,请在终端中运行echo $GEM_HOME
  2. 使用RVM时,当您更改$ GEM_HOME时,它们会安装到您的RVM安装中。现在运行echo $GEM_HOME会显示进入RVM安装的路径。
  3. 将Bundler添加到组合中时,gems将安装在$GEM_HOME中,或者如果在运行时指定路径bundle install将安装到该路径。要通过Bundler找到宝石的位置,您可以使用bundle show gemname来获取它的完整路径。
+7

对于#2运行'fvm info'也是有用的 - 打印出当前正在使用的整个ruby + ruby​​gems环境。 – ffoeg 2011-01-06 05:00:25

4

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

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

随着RVM gem env将报告RVM管理的gem库路径。

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

0

要查找一个宝石安装使用路径:

gem which gem_name 

要找到可执行文件(如html2haml)使用方法:

which executable_name 

为了避免键入这是由捆扎机组建议bundle exec html2haml,使用我的rubygems-bundler宝石。