Ruby 1.9 side by side with 1.8

I followed this guide that uses ruby switcher -
http://blog.thinkrelevance.com/2009/7/29/ruby-switcher-working-with-multiple-ruby-versions-has-never-been-this-easy/comments/11186#comment-11186

I switch to 1.9 with this command: use_ruby_191

I want to install rails (so I can run rake gems:install). when i type
sudo gem install rails
it's installing it but I can't see it in gems list. the only gem I
see is rake.
is there a way to access all my existing gems that works with 1.8?

here is my gem env:
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.1
  - RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [i686-linux]
  - INSTALLATION DIRECTORY: /home/oren/.gem/ruby/1.9
  - RUBY EXECUTABLE: /home/oren/.ruby_versions/ruby-1.9.1-p129/bin/
ruby
  - EXECUTABLE DIRECTORY: /home/oren/.gem/ruby/1.9/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/oren/.gem/ruby/1.9
     - /home/oren/.gem/ruby/1.9.1
     - /home/oren/.ruby_versions/ruby-1.9.1-p129/lib/ruby/gems/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://gems.rubyforge.org/", "http://
gems.github.com"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
     - http://gems.github.com

I switch to 1.9 with this command: use_ruby_191

I want to install rails (so I can run rake gems:install). when i type
sudo gem install rails
it's installing it but I can't see it in gems list. the only gem I
see is rake.
is there a way to access all my existing gems that works with 1.8?

Nope the gems are kept in separate subdirectories. You could rename
those directories, but I'd recommend keeping them separate.
For now, I'd recommend doing "gem install" for all your gems in both
versions of ruby.
GL!
-r

For now, I'd recommend doing "gem install" for all your gems in both
versions of ruby.
GL!
-r

It's installing it but gem list shown nothing but rake!

sudo gem install rails

Successfully installed rails-2.3.3
1 gem installed
Installing ri documentation for rails-2.3.3...
Updating ri class cache with 5437 classes...
Installing RDoc documentation for rails-2.3.3...
~> gem list

*** LOCAL GEMS ***

rake (0.8.7)

I found that it installs it to the 1.8 folder!
I tried 'sudo gem1.9 install <gem>' but I get:
sudo: gem1.9: command not found

Is it something with symlinks?
I am not sure how to deal with those...
any help would be great. i really want to test my project on 1.9!

Try this

Create a .gemrc file in your home directory (~) to declare GEM_PATH
and GEM_HOME, this is in yaml format.
Replace the gempath with whatever the path is on your machine if its
different.

# add what is below
gemhome: /home/yourusername/gems
gempath:
- /home/yourusername/gems
- /usr/lib/ruby/gems/1.8

Verify the environment has changed with:

$ gem environment

Hope this helps

···

On Aug 15, 10:54 am, oren <orengo...@gmail.com> wrote:

> For now, I'd recommend doing "gem install" for all your gems in both
> versions of ruby.
> GL!
> -r

It's installing it but gem list shown nothing but rake!

sudo gem install rails

Successfully installed rails-2.3.3
1 gem installed
Installing ri documentation for rails-2.3.3...
Updating ri class cache with 5437 classes...
Installing RDoc documentation for rails-2.3.3...
~> gem list

*** LOCAL GEMS ***

rake (0.8.7)

--
Daniel Roux

I found a solution:
sudo ~/.ruby_versions/ruby-1.9.1-p129/bin/gem uninstall <gem>

but I am looking for a way to simply use: 'sudo gem', so i can use my
'rake gems:insall'
I found this gem - http://github.com/lsegal/gem-sane-binary/tree/master
but not sure it's the right direction.

I started following the steps:
sudo mv /usr/bin/ruby /usr/bin/ruby18
sudo mv /usr/bin/irb /usr/bin/irb18
sudo mv /usr/bin/gem /usr/bin/gem18

but i am not sure what to do in the next step:
"Then create your ruby/irb/gem symlinks to point to whichever Ruby
install you're using:
ln -fs /usr/local/bin/ruby19 /usr/local/bin/ruby"

btw, here is the output of gem env:
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.1
  - RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [i686-linux]
  - INSTALLATION DIRECTORY: /home/oren/.gem/ruby/1.9
  - RUBY EXECUTABLE: /home/oren/.ruby_versions/ruby-1.9.1-p129/bin/
ruby
  - EXECUTABLE DIRECTORY: /home/oren/.gem/ruby/1.9/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/oren/.gem/ruby/1.9
     - /home/oren/.gem/ruby/1.9.1
     - /home/oren/.ruby_versions/ruby-1.9.1-p129/lib/ruby/gems/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://gems.rubyforge.org/", "http://
gems.github.com"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
     - http://gems.github.com

and when i switch back to 1.8 with use_ruby_187:
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.3
  - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
  - INSTALLATION DIRECTORY: /home/oren/.gem/ruby/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /home/oren/.gem/ruby/1.8/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/oren/.gem/ruby/1.8
     - /usr/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://gems.rubyforge.org/", "http://
gems.github.com"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
     - http://gems.github.com

Thanks Daniel,
I ended up using this guide:
http://blog.michaelgreenly.com/2009/04/multiple-versions-of-ruby-on-ubuntu-3.html

and i can switch ruby versions with select_ruby script that updates a
symbolic link that points to the active version.

I solved it with this lines in .bashrc:

alias ruby-switch-18='sudo ln -fs /usr/bin/ruby1.8 /usr/local/bin/ruby
&&
  sudo ln -fs /usr/bin/irb1.8 /usr/local/bin/irb &&
  sudo ln -fs /usr/bin/gem1.8 /usr/local/bin/gem' &&
  sudo ln -fs /usr/bin/rake /usr/local/bin/rake'

alias ruby-switch-19='sudo ln -fs ~/.ruby_versions/ruby-1.9.1-p129/bin/
ruby /usr/local/bin/ruby &&
  sudo ln -fs ~/.ruby_versions/ruby-1.9.1-p129/bin/irb /usr/local/bin/
irb &&
  sudo ln -fs ~/.ruby_versions/ruby-1.9.1-p129/bin/gem /usr/local/bin/
gem'&&
  sudo ln -fs ~/.ruby_versions/ruby-1.9.1-p129/bin/rake /usr/local/bin/
rake'

now i still have issue when running rake gems:install
rake aborted!
Could not find RubyGem test-unit (= 2.0.2)
/home/oren/silica/Rakefile:10:in `require'

I solved it with this lines in .bashrc:

alias ruby-switch-18='sudo ln -fs /usr/bin/ruby1.8 /usr/local/bin/ruby
&&
  sudo ln -fs /usr/bin/irb1.8 /usr/local/bin/irb &&
  sudo ln -fs /usr/bin/gem1.8 /usr/local/bin/gem' &&
  sudo ln -fs /usr/bin/rake /usr/local/bin/rake'

alias ruby-switch-19='sudo ln -fs ~/.ruby_versions/ruby-1.9.1-p129/bin/
ruby /usr/local/bin/ruby &&
  sudo ln -fs ~/.ruby_versions/ruby-1.9.1-p129/bin/irb /usr/local/bin/
irb &&
  sudo ln -fs ~/.ruby_versions/ruby-1.9.1-p129/bin/gem /usr/local/bin/
gem'&&
  sudo ln -fs ~/.ruby_versions/ruby-1.9.1-p129/bin/rake /usr/local/bin/
rake'

now i still have issue when running rake gems:install
rake aborted!
Could not find RubyGem test-unit (= 2.0.2)
/home/oren/silica/Rakefile:10:in `require'

and i can switch ruby versions with select_ruby script that updates a
symbolic link that points to the active version.

Updating a single symbolic link wasn't enough here - I wanted to update gem binaries as well. Here's what I use (and I am sure you can deduce further details from the script)...

kaspar

···

--------------

#!/usr/local/share/ruby19/bin/ruby

def base_path
   '/usr/local/share/'
end
def bin_dir(version)
   File.join(base_path, version, 'bin')
end
def lib_dir(version)
   File.join(base_path, version, 'lib')
end

def replace_symlink(source, dest)
   if !File.exists?(dest) || File.symlink?(dest)
     print "[#{File.basename(dest)}] "
     `sudo ln -nsf #{source} #{dest}`
   end
end

# Iterates over binaries in version.
#
def all_binary_links(version) # yield: binary_path, symlink_path
   Dir[File.join(bin_dir(version), '*')].each do |binary_path|
     binary_name = File.basename(binary_path)
     yield binary_path, File.join('/usr/bin', binary_name)
   end
end

def switch_to(ruby_version, old_version)
   # Remove current (old) symlinks
   puts "Removing old links..."
   all_binary_links(old_version) do |bin_path, link_path|
     print '.'
     `sudo rm #{link_path} 2>/dev/null`
   end
   puts

   puts "Symlinking new version..."
   all_binary_links(ruby_version) do |bin_path, link_path|
     replace_symlink(bin_path, link_path)
   end
   puts

   # Symlink /lib
   replace_symlink(
     lib_dir(ruby_version),
     '/usr/lib/ruby')
   puts
end

case ARGV.first
   when /19/
     switch_to :ruby19, :ruby18
   when /18/
     switch_to :ruby18, :ruby19
else
   puts "Run with either '19' or '18' to switch to the given ruby version..."
end

Thanks Daniel,
I ended up using this guide:
http://blog.michaelgreenly.com/2009/04/multiple-versions-of-ruby-on-

ubuntu-3.html

and i can switch ruby versions with select_ruby script that updates a
symbolic link that points to the active version.

If you value a working ubuntu system in which you can install such
packages as vim-gnome and other useful programs that use ruby, by using
apt-get, then you'll stay *far* away from these instructions, and you'll
content yourself to useing suffixes on the names of the ruby binaries to
specify which version you want at the moment you want it.

This is your warning that following these directions will break your
Ubuntu box in certain respects.

--Ken

···

On Mon, 17 Aug 2009 04:00:10 +0900, oren wrote:

--
Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/