How do I use RVM and create globally available gem

2019-01-07 07:50发布

问题:

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?

回答1:

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.



回答2:

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.



回答3:

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


回答4:

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



回答5:

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.



回答6:

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/