Gemsets
如果你正在使用 RVM(Ruby Version Manager)
,那麼為每個專案使用 gemset
是個好主意。gemset
只是一個容器,可以用來保持寶石彼此分開。每個專案建立一個 gemset
允許你為一個專案更改 gems(和 gem 版本),而不會破壞所有其他專案。每個專案只需要擔心自己的寶石。
RVM
為每個紅寶石翻譯提供(> = 0.1.8)@global gemset
。你為 @global gemset
安裝給定 ruby 的寶石可用於你與該 ruby 關聯建立的所有其他 gemset。這是允許所有專案共享特定 ruby 直譯器安裝的相同已安裝 gem 的好方法。
建立 gemsets
假設你已經安裝了 ruby-2.3.1
並且已使用此命令選擇它:
rvm use ruby-2.3.1
現在為這個 ruby 版本建立 gemset:
rvm gemset create new_gemset
其中 new_gemset
是 gemset 的名稱。要檢視 ruby 版本的可用 gemset 列表:
rvm gemset list
列出所有 ruby 版本的寶石:
rvm gemset list_all
使用列表中的 gemset(假設 new_gemset
是我想要使用的 gemset):
rvm gemset use new_gemset
如果你想轉換到其他一些 ruby 版本,你也可以使用 gemset 指定 ruby 版本:
rvm use ruby-2.1.1@new_gemset
為特定的 ruby 版本指定預設 gemset:
rvm use 2.1.1@new_gemset --default
要從 gemset 中刪除所有已安裝的 gem,你可以將其清空:
rvm gemset empty new_gemset
要將 gemset 從一個 ruby 複製到另一個 ruby,你可以通過以下方式完成:
rvm gemset copy 2.1.1@rails4 2.1.2@rails4
刪除 gemset:
rvm gemset delete new_gemset
檢視當前的寶石名稱:
rvm gemset name
在全域性 gemset 中安裝 gem:
rvm @global do gem install ...
在 Ruby 安裝期間初始化 Gemsets
當你安裝新的 ruby 時,RVM 不僅會建立兩個 gemset(預設的,空的 gemset 和全域性 gemset),還會使用一組使用者可編輯的檔案來確定要安裝的 gem。
在~/.rvm/gemsets
工作時,rvm 使用基於正在安裝的 ruby 字串的樹形層來搜尋 global.gems
和 default.gems
。使用 ree-1.8.7-p2010.02
的示例,rvm 將檢查(並從中匯入)以下檔案:
~/.rvm/gemsets/ree/1.8.7/p2010.02/global.gems
~/.rvm/gemsets/ree/1.8.7/p2010.02/default.gems
~/.rvm/gemsets/ree/1.8.7/global.gems
~/.rvm/gemsets/ree/1.8.7/default.gems
~/.rvm/gemsets/ree/global.gems
~/.rvm/gemsets/ree/default.gems
~/.rvm/gemsets/global.gems
~/.rvm/gemsets/default.gems
例如,如果你通過新增以下兩行來編輯~/.rvm/gemsets/global.gems
:
bundler
awesome_print
每次安裝新的 ruby 時,這兩個寶石都會安裝到你的全域性 gemset 中。在更新 rvm 期間,通常會覆蓋 default.gems
和 global.gems
檔案。