ChatGPT解决这个技术问题 Extra ChatGPT

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?


m
mpapis

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.


thanks, you're the only one who actually answered the question. We can't share the gemsets between ruby interpreter versions (ie 1.8.7 and 1.9.2) but the global gemset can be used to share between projects of the same ruby version (ie, gems installed globally for 1.8.7 will be shared among projects using this version). Also, I up-voted ennuikiller's answer because he actually gave the commands for creating the global gemset.
r
rakvium

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.


N
Nick

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

It is "gem install mysql passenger", there should be no comma
J
Justin Soliz

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


t
the Tin Man

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.


bundle install can not be called with arguments like gem names
m
mpapis

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/


A
Alex Soto

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

rvm all do rvm @global do gem install passenger


f
fangxing

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