Running Multiple Versions of Ruby on Debian?

Well so far things are going kind of good, I’ve built my own server and
it’s sitting in colo running Debian Etch and Ruby 1.8.6 (built from
source)

Now me being me I wouldn’t mind running 1.8.7 alongside 1.8.6 for my
Rails blogging software.

Has anyone had any experiences in running multiple versions of Ruby on
Debian Etch?

I found one article which explains how to run 3 using
update-alternatives but pretty unsure if it’ll adapt well to Debian,

http://blog.michaelgreenly.com/2008/08/multiple-versions-of-ruby-on-ubuntu-2.html

Seems possible, especially using:

./configure --prefix=/opt/ruby-1.8.7-p71

To set where to install the Ruby version, I’m imagining I’d have to run
gem --update like,

/opt/ruby-1.8.7-p71/bin/gem --update
or
/opt/ruby-1.8.7-p71/bin/gem install rails

to install the necessary gems per ruby install without touching the one
in /usr/bin/ruby,

then i’m imagining,

/opt/ruby-1.8.7-p71/bin/thin start -C /var/www/apps/myapp/thin.conf
…to start the thin webserver with my config file

Will try out on a virtual machine first, but am i on the right track or
is there something better?

Alle Friday 10 October 2008, John G. ha scritto:

I found one article which explains how to run 3 using
gem --update like,
/opt/ruby-1.8.7-p71/bin/thin start -C /var/www/apps/myapp/thin.conf
…to start the thin webserver with my config file

Will try out on a virtual machine first, but am i on the right track or
is there something better?

I’d also suggest to pass configure the --program-prefix or
–program-suffix
arguments. This way, you can call the ruby 1.8.7 executable ruby187,
instead
of just ruby and you won’t have to use its full path every time you want
to
use it. The same happens with the other executables, like irb and ri.

Stefano

On Fri, Oct 10, 2008 at 9:05 AM, John G. [email protected]
wrote:

Seems possible, especially using:

./configure --prefix=/opt/ruby-1.8.7-p71

To set where to install the Ruby version, I’m imagining I’d have to run
gem --update like,

/opt/ruby-1.8.7-p71/bin/gem --update

is there something better?

I just create files with appropriate PATH settings, like

export RUBY_HOME=/opt/ruby-1.8.7-p71
PATH=$RUBY_HOME/bin:$PATH

Name them sensibly, and you can just type, e.g.
prompt% . 187
to source, and voila! No need to enter the entire path, or remember
to use a different name.

FWIW,

Thanks Stefano,

so if i were to do,

./configure --prefix=/opt/ruby-1.8.7-p71 --program-suffix=187

to make ruby187 point to /opt/ruby-1.8.7-p71/ruby ?

Alle Friday 10 October 2008, John G. ha scritto:

Thanks Stefano,

so if i were to do,

./configure --prefix=/opt/ruby-1.8.7-p71 --program-suffix=187

to make ruby187 point to /opt/ruby-1.8.7-p71/ruby ?

It doesn’t create a symlink. It will change the name of the ruby
executable:
not

/opt/ruby-1.8.7-p71/ruby

but

/opt/ruby-1.8.7-p71/ruby187

If you then put /opt/ruby-1.8.7-p71 in your PATH, you’ll be able to use
ruby187 to call the new version and ruby to call the old version.

Stefano

John G.:

Has anyone had any experiences in running
multiple versions of Ruby on Debian Etch?

I run hand-compiled Ruby 1.8.6, 1.8.7 and 1.9.0 alongside
each other by putting them in ~/opt with, for example,
./configure --prefix=/home/shot/opt/ruby-1.8.7-p72

I then have ~/opt/ruby-1.8.7 symling poiting to it, plus

export PATH_ORIG="$PATH"
export PATH="/var/lib/gems/1.8/bin:$PATH_ORIG"

in my ~/.bashrc plus

alias r7=‘export PATH="/home/shot/opt/ruby-1.8.7/bin:$PATH_ORIG"’
alias r8=‘export PATH="/home/shot/opt/ruby-1.8.6/bin:$PATH_ORIG"’
alias r9=‘export PATH="/home/shot/opt/ruby-1.9.0/bin:$PATH_ORIG"’

in my ~/.bash_aliases – this way I get the system’s Ruby+RubyGems by
default and can switch to my hand-compiled environment when I want to
run Ruby 1.8.6, 1.8.7 or 1.9.0.

Ruby 1.9 comes with RubyGems, in the cases of Ruby 1.8 you need to
download the tarball and then run ruby setup.rb with the proper,
hand-compiled Ruby binary.

I hand-compile 1.8.6 because Debian and Ubuntu by
default --enable-pthreads which is a performance killer.

export CFLAGS=’-O3 -march=native’
should also boost performance, but in
my case the differences are neglible.

– Shot