2010-10-24 58 views
56

我正在運行Mac OSX 10.6.4並安裝了RVM。到目前爲止,它非常棒,我真的很喜歡它可以讓我管理多個版本的rails和ruby,而不用擔心頭痛!如何使用RVM並創建全球可用的寶石?

但是,我不想爲每個設置安裝某些寶石(如乘客)。有沒有辦法在寶石之間分享寶石?我有[email protected][email protected],我可以安裝一次寶石,例如乘客,mysql和capistrano,並可以使用所有版本嗎?

回答

61

有一種叫做全局gemset的東西,它在所有寶石版本之間共享。但是你不能在ruby-versions之間分享寶石。

但是,您可以做的是創建一個將在添加新的ruby版本時自動安裝的gem列表。這被描述爲here。簡而言之:編輯一個名爲~/.rvm/gemsets/global.gems的文件,以包含每個ruby版本所需的寶石列表。

希望它有幫助。

+0

謝謝,你是唯一真正回答問題的人。我們不能共享Ruby解釋器版本(即1.8.7和1.9.2)之間的gemset,但全局gemset可用於在相同ruby版本的項目之間共享(即,全局安裝的1.8.7 gem將被共享在使用此版本的項目中)。另外,我投票贊成ennuikiller的回答,因爲他實際上給出了創建全球寶石的命令。 – GiH 2010-10-24 15:01:29

31

您可以創建和使用全局gemsets用下面的命令:

rvm gemset create global 
rvm gemset use global 

你已經創建並執行全球寶石使用後只需安裝寶石像往常一樣:

gem install mysql passenger 
+1

這是「gem install mysql passenger」,應該沒有逗號 – 2014-09-18 14:36:44

3

添加在「全球」rvm寶石名稱中,您需要爲每個寶石鑲嵌寶石,例如

rvm [email protected] 

然後項目特定的寶石rvm [email protected]已經讓你成爲你的全球列表中的「默認」寶石

2

根據RVM文檔,實際上有一些「全局」gemset可以在rvm級別,每個解釋器,每個解釋器版本以及最後在每個解釋器的特定補丁級別定義。並從一個級別安裝寶石級聯到下一級。

2

創建並使用全球寶石爲:

rvm use <ruby version>@global --create 

並安裝所需gemsets之間共享寶石:

bundle install <gem name> 

但這些寶石只能在相同Ruby版本的gemsets之間共享。

+1

無法使用像gem名稱這樣的參數調用bundle install – 2015-02-20 15:27:54

49

隨着最新版本RVM(1.17.0和更新版本)只需鍵入:

rvm @global do gem install passenger

rvm [email protected] do gem install passenger如果你需要它僅適用於紅寶石的特定版本。