开发者

How do I use RVM and create globally available gems?

I'm running Mac OSX 10.6.4 and have installed RVM. Its been great so far, I really love the way it lets me manage having multiple versions of rails and ruby on the same machine without headaches!

However, I don't want to have to install certain gems (such as passenger) for each setup. Is there a way to share gems between gemsets? I have a 1.8.7@rails2.3.8 and 1.9.2@rails3, can I have gems such as passenger, mysql, and capistrano installed once and开发者_开发问答 used with all versions?


There is something called the global gemset, and it is shared between all your gemsets of a certain ruby-version. But you can't share gems between ruby-versions.

However, what you can do is create a list of gems that will be installed automatically when adding a new ruby version. That is described here. In short: edit a file called ~/.rvm/gemsets/global.gems to contain the list of gems you want to be there for each ruby-version.

Hope it helps.


With the latest RVM version (1.17.0 and newer) just type:

rvm @global do gem install passenger

or

rvm 1.9.3@global do gem install passenger if you need it only for a specific version of ruby.


You can create and use global gemsets with the following commands:

rvm gemset create global
rvm gemset use global

After you've created and execute use for the global gemset simply install gems as usual:

gem install mysql passenger


add the the gems you want for every gemset in a "global" rvm gemset name i.e.

rvm 1.9.2@global

then project specific gemsets rvm 1.9.2@myProject will already have you're "default" gems from your global list


Create and use a global gem as:

rvm use <ruby version>@global --create

and install gems you want to share between gemsets:

bundle install <gem name>

but these gems can only be shared between gemsets of the same Ruby version.


According to the RVM documentation, there are actually a number of "global" gemsets which can be defined at the rvm-wide level, per interpreter, per interpreter version, and finally at a specific patch-level per interpreter. And installed gems cascade from one level to the next.

  • https://rvm.io/gemsets/initial/


If you need to install a particular gem across multiple rubies you can do:

rvm all do rvm @global do gem install passenger


For someone wanna manually trigger install rvm global.gems

rvm gemset import ~/.rvm/gemsets/global.gems

# or

cat ~/.rvm/gemsets/global.gems | xargs gem install
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜