Changing Ruby versions

Overview

Newer hosting platforms, v6+, support multiple Ruby versions through rvm. This enables you to run multiple versions of Rack and Rails using any available Ruby interpreters. Currently, versions 1.8 to 2.2 are supported.

Important: Avoid using 1.8, except to shim an older application with an intent to upgrade. 1.8 is deprecated and contains several unpatched security vulnerabilities as of June 2013.

Switching versions

Important: all commands are done from the terminal.

Listing available versions

rvm list will list available versions. If a version that you need is missing, open a ticket and we’ll install it for you.

[myadmin]$ rvm list
rvm rubies
   ruby-1.8.7-head [ x86_64 ]
   ruby-1.8.7-p374 [ x86_64 ]
   ruby-1.9.3-p547 [ x86_64 ]
 * ruby-2.0.0-p481 [ x86_64 ]
=> ruby-2.1.2 [ x86_64 ]
   ruby-head [ x86_64 ]
# => - current
# =* - current && default
# *  - default

Current (=>) indicates the version that will be reported with ruby --version and default (*) indicates the Ruby version in effect upon login without issuing rvm use.

Setting versions

To use a Ruby version for the life of the session, issue rvm use ruby-ver where ruby-ver is the ruby version:

[myadmin]$ rvm use ruby-head
ruby-head - #gemset created /home/myadmin/.rvm/gems/ruby-head
ruby-head - #importing gemsetfile /.socket/ruby/gemsets/default.gems evaluated to empty gem list
ruby-head - #generating default wrappers.............
Using /home/myadmin/.rvm/gems/ruby-head

If Rubygems hasn’t been initialized yet for the given version, then gems will be populated. Use rvm use --default ruby-ver to set the default version for future logins.

Note: rvm list will report a different default from current. Default, in this context, indicates server default and not the default set via rvm use.

Setting versions as default

A Ruby version can be configured as the default for a directory and its descendents by adding the Ruby version via .ruby-version. For example, to set Ruby 2.2.4 as the default interpreter under /var/www and its descendents, including /var/www/myapp, /var/www/domain2.com/app1, and /var/www/domain2.com/app2, create a file named /var/www/.ruby-version with “ruby-2.2.4”:

echo "ruby-2.2.4" > /var/www/.ruby-version
ruby -v
# Ruby version will be system default
cd /
# Leave /var/www
cd /var/www
# Ruby version now queried from /var/www/.ruby-version
ruby -v
# Ruby version will output ruby 2.2.4p230

See also

Leave a Reply