The default Ruby on Red Hat (Enterprise) based distros is still 1.8.7 which is almost completely unsupported. I don’t like using RVM on production machines since I don’t want to manually update versions. A search around the web revealed that RHEL provide extra packages as software collections. Scientific Linux also has this collection available here.
I installed this on a fresh machine with no Ruby installed, it might be a good idea to remove any 1.8.7 packages first with
yum remove ruby
I though you could just run
yum install yum-conf-softwarecollections
but I couldn’t get it to work so just downloaded the rpm and installed from the local file with
rpm -ivh yum-conf-softwarecollections-1.0-1.el6.noarch.rpm
Then you can install ruby 1.9.3 with
yum install ruby193
However, Ruby probably won’t be on your path yet. It is installed in
/opt/rh/ruby193/. Inside this directory is a file called
enable which has the commands to add the binaries etc to your path and also the shared libraries. Add these commands to your
.bashrc, update your environment with
We also need to ensure that
apache can pick it up, I have added it to the top of
/etc/init.d/httpd, hopefully that will be enough. Another issue is delayed job, we need to ensure that the delayed job daemon is using the version of ruby we installed. Perhaps adding it to the delayed job startup script will do the trick.
Here is some info about software collections for Centos which I have not had a chance to try but looks like a good bet.