2011-01-05 50 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寶石。