如何在使用RVM时跨所有gemset安装gem

有没有办法在使用RVM时在系统中的所有rubies和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。 在此文件中,您需要定义所需的gem(每行一个),例如

 bundler zeus 

每次向RVM添加新的ruby版本时,都会安装这些gem。

您可以安装到每个ruby解释器的默认全局gemset,如下所述:

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

此页面还提到了默认的gem集

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

由于ruby之间不兼容,将gem安装到所有ruby解释器并没有用。

通过RVM文档,我没有看到具体的方法。 但是,您可以通过@global gemsets和gemset复制复制的组合来近似它。

全球gem集提供可用于给定ruby的所有gem的gem。 例如:

 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 

现在sqlite3 gem可用于所有1.8.7 gemsets(假设我有正确顺序的参数 – 我可能不会,在这种情况下切换1.9.3和1.8.7)。 它不是很理想,因为一个ruby的更新不会在其他ruby中自动显示,你必须单独复制到每个ruby,我想你最终可能会破坏任何依赖ruby的全球gem。设置在每个。 如果最后一点不是你预见到的问题,你可能会编写一个脚本来避免前两点隐含的繁琐。

免责声明:这是严格地通过阅读RVM文档组合在一起,我实际上没有尝试过。 如果我出错了,我会很高兴编辑答案来修复它。