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:
  • REMOTE SOURCES:

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 ’ 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!

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

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:
  • REMOTE SOURCES:

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:
  • REMOTE SOURCES:

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’

On Aug 15, 10:54 am, oren [email protected] wrote:

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)

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

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.

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

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs