I’m fairly new to Ruby and have been playing around with both RVM and rbenv and have settled on rbenv primarily for its simplicity.
One thing I was trying to figure out was setting it up globally for all users, while still allowing users to opt-out of the global Ruby version and install their own.
First, I cloned the rbenv repository to /usr/local/rbenv
. Next, I also cloned
ruby-build into /usr/local/rbenv/plugins
so it’s quick and easy for the system administrator to install different Ruby versions.
Next, I added the following to /etc/skel/.profile
so new users will inherit
the system Ruby by default (unless they opt-out):
#### begin rbenv configuration ####
## Remove these lines if you wish to use your own
## clone of rbenv (with your own rubies)
export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"
# Allow local Gem management
export GEM_HOME="$HOME/.gem"
export GEM_PATH="$HOME/.gem"
export PATH="$HOME/.gem/bin:$PATH"
#### end rbenv configuration ####
Note that this will need to be added to any existing user’s .profile
file (or
equivalent).
The same block also needs adding to root’s .profile
, with the exception of the Gem
section, as rbenv includes gem
within the Ruby path.
Next, you need to source
root’s profile (everything from this point should be done
as the root user, via sudo -i
if you like).
Now, install the version of Ruby that you want to use globally. For this, I’ll use
rbenv install 1.9.3-p125
.
We now need to rbenv rehash
and then run rbenv global 1.9.3-p125
. At this point
I also like to run gem install rbenv-rehash --no-ri --no-rdoc
which will rehash
each time new Gems are installed. It also appears to do this for individual users if they
install their own Gems.
To summarise - we now have a working global implementation of rbenv which users
can override individually by commenting the block in their .profile
and cloning
rbenv into their home directory. As it stands, this setup allows users to install their own Gems, with Gems that the root user installs being stored within /usr/local/rbenv
.
This setup is pretty new and may be subject to change, so with that said, if anyone comes across a better or improved way to do this, please let me know!