Forum: Ruby Running Multiple Versions of Ruby on Debian?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
John G. (Guest)
on 2008-10-10 20:08
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-ve...

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?
Stefano C. (Guest)
on 2008-10-10 20:14
(Received via mailing list)
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
Hassan S. (Guest)
on 2008-10-10 20:23
(Received via mailing list)
On Fri, Oct 10, 2008 at 9:05 AM, John G. <removed_email_address@domain.invalid>
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,
John G. (Guest)
on 2008-10-10 20:24
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 ?
Stefano C. (Guest)
on 2008-10-10 20:28
(Received via mailing list)
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
Shot (Piotr S.) (Guest)
on 2008-10-20 00:28
(Received via mailing list)
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
This topic is locked and can not be replied to.