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
文件。