如何在使用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集
由于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文档组合在一起,我实际上没有尝试过。 如果我出错了,我会很高兴编辑答案来修复它。