Home » Ruby » How do I use RVM and create globally available gems?

How do I use RVM and create globally available gems?

Posted by: admin November 30, 2017 Leave a comment

Questions:

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 [email protected] and [email protected], can I have gems such as passenger, mysql, and capistrano installed once and used with all versions?

Answers:

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.

Questions:
Answers:

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

rvm @global do gem install passenger

or

rvm [email protected] do gem install passenger if you need it only for a specific version of ruby.

Questions:
Answers:

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

Questions:
Answers:

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

rvm [email protected]

then project specific gemsets rvm [email protected] will already have you’re “default” gems from your global list

Questions:
Answers:

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.

Questions:
Answers:

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.