簡體   English   中英

如何在使用RVM時跨所有gemset安裝gem

[英]How to install gem across all gemsets when using RVM

有沒有辦法在使用RVM時在系統中的所有紅寶石和gemsets(不僅僅是默認或系統ruby)上安裝gem?

你可以執行:

rvm @global do gem install [gem_name]

全局安裝gem(每個ruby版本)。

每個ruby版本無法全局安裝gem。

根據https://rvm.io/gemsets/initial,您可以為文件~/.rvm/gemsets/global.gems每個ruby版本定義自動安裝的gem。 在此文件中,您需要定義所需的寶石(每行一個),例如

bundler
zeus

每次將新的ruby版本添加到RVM時,都會安裝這些gem。

您可以安裝到每個ruby解釋器的默認全局gemset,如下所述:

https://rvm.io/gemsets/global/

此頁面還提到了默認的寶石套裝

https://rvm.io/gemsets/using/

由於紅寶石之間的不兼容性,將gem安裝到所有ruby解釋器並沒有用。

通過RVM文檔,我沒有看到具體的方法。 但是,您可以通過@global gemsets和gemset復制復制的組合來近似它。

全球寶石集提供可用於給定紅寶石的所有寶石的寶石。 例如:

rvm install 1.9.3
rvm --create 1.9.3@rails3.0
rvm --create 1.9.3@rails3.1
rvm use 1.9.3@global
gem install sqlite3

將為1.9.3 ruby​​創建兩個不同的gemsets,並且兩者都可以使用全局sqlite3。

然后,一旦你完成了這個,你可以將全局gemset復制到其他rubies,並且他們自己可以使用它。 例如,作為上述的延續:

rvm install 1.8.7
rvm gemset copy 1.9.3@global 1.8.7@global

現在所有1.8.7 gemsets都可以使用sqlite3 gem(假設我的參數順序正確 - 我可能沒有,在這種情況下切換1.9.3和1.8.7)。 它不是很理想,因為一個紅寶石的更新不會在其他紅寶石中自動顯示,你必須單獨復制到每個紅寶石,我想你最終可能會破壞任何依賴紅寶石的全球寶石。在每個中設置。 如果最后一點不是你預見到的問題,你可能會編寫一個腳本來避免前兩點隱含的繁瑣。

免責聲明:這是嚴格閱讀RVM文檔,我實際上並沒有嘗試過。 如果我出錯了,我會很高興編輯答案來修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM