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
精彩评论