使用RVM时,有没有办法在系统中的所有rubies和gemsets(不仅仅是默认或系统ruby)上安装gem?
答案 0 :(得分:8)
您可以执行:
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。
答案 1 :(得分:6)
如上所述,您可以安装到每个ruby解释器的默认全局gemset:
https://rvm.io/gemsets/global/
此页面还提到了默认的宝石集
将gem安装到所有ruby解释器并没有用 由于红宝石之间的不相容性。
答案 2 :(得分:0)
通过RVM文档,我没有看到具体的方法。但是,您可以通过@global gemsets和gemset复制复制的组合来近似它。
全球宝石集提供可用于给定红宝石的所有宝石的宝石。 E.g:
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创建两个不同的gemset,并且两者都可以使用全局sqlite3。
然后,一旦你完成了这项工作,就可以将全局gemset复制到其他红宝石中,并且他们可以自己使用它。例如,作为上述内容的延续:
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文档,我还没有真正尝试过。如果我出错了,我很乐意编辑答案来解决问题。