我正在运行Mac OSX 10.6.4并安装了RVM。到目前为止它一直很棒,我真的很喜欢它让我在同一台机器上管理多个版本的rails和ruby而不会头痛的方式!
但是,我不想为每个设置安装某些宝石(例如乘客)。有没有办法在宝石集之间分享宝石?我有一个1.8.7@rails2.3.8和1.9.2@rails3,我可以安装一下像passenger,mysql和capistrano这样的宝石,并且可以用于所有版本吗?
答案 0 :(得分:63)
有一种称为全局gemset的东西,它在某个ruby版本的所有gemset之间共享。但你无法在ruby版本之间共享宝石。
但是,您可以做的是创建一个在添加新的ruby版本时将自动安装的gem列表。这是here所描述的。简而言之:编辑一个名为~/.rvm/gemsets/global.gems
的文件,以包含您希望在每个ruby版本中存在的宝石列表。
希望它有所帮助。
答案 1 :(得分:56)
使用最新的RVM版本(1.17.0及更高版本),只需输入:
rvm @global do gem install passenger
或
rvm 1.9.3@global do gem install passenger
如果您只需要特定版本的ruby。
答案 2 :(得分:31)
您可以使用以下命令创建和使用全局gemsets:
rvm gemset create global
rvm gemset use global
在创建并执行全局gemset的使用之后,只需像往常一样安装gem:
gem install mysql passenger
答案 3 :(得分:3)
在“全局”rvm gemset名称中为每个gemset添加所需的宝石,即
rvm 1.9.2@global
然后项目特定的宝石集rvm 1.9.2@myProject
已经拥有全局列表中的“默认”宝石
答案 4 :(得分:3)
创建并使用全球宝石:
rvm use <ruby version>@global --create
并安装您想要在gemsets之间共享的宝石:
bundle install <gem name>
但这些宝石只能在同一个Ruby版本的gemset之间共享。
答案 5 :(得分:2)
根据RVM文档,实际上有许多“全局”gemsets可以在rvm级别,每个解释器,每个解释器版本定义,最后在每个解释器的特定补丁级别定义。并安装了宝石级联从一个级别到下一个级别。
答案 6 :(得分:0)
如果您需要跨多个红宝石安装特定的宝石,则可以执行以下操作:
rvm all do rvm @global do gem install passenger
答案 7 :(得分:0)
对于想要手动触发安装 rvm global.gems
rvm gemset import ~/.rvm/gemsets/global.gems
# or
cat ~/.rvm/gemsets/global.gems | xargs gem install