如何使用RVM并创建全局可用的宝石?

时间:2010-10-24 04:19:47

标签: ruby-on-rails ruby macos rubygems

我正在运行Mac OSX 10.6.4并安装了RVM。到目前为止它一直很棒,我真的很喜欢它让我在同一台机器上管理多个版本的rails和ruby而不会头痛的方式!

但是,我不想为每个设置安装某些宝石(例如乘客)。有没有办法在宝石集之间分享宝石?我有一个1.8.7@rails2.3.8和1.9.2@rails3,我可以安装一下像passenger,mysql和capistrano这样的宝石,并且可以用于所有版本吗?

8 个答案:

答案 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