Wednesday, September 03, 2008

/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)

Recently I ran an update to my Ruby Gems using the following command

sudo gem update --system

and I got this strange Error:

/usr/bin/gem:23: uninitialized constant Gem::GemRunner(NameError)

I googled and found a fix to this problem.
Add the line in bold to the file /usr/bin/gem:

#!/usr/bin/env ruby
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++

require 'rubygems/gem_runner'
require 'rubygems'
Gem.manage_gems

required_version = Gem::Version::Requirement.new(">= 1.8.0")
unless required_version.satisfied_by?(Gem::Version.new(RUBY_VERSION))
puts "Expected Ruby Version #{required_version}, was #{RUBY_VERSION}"
exit(1)
end

# We need to preserve the original ARGV to use for passing gem options
# to source gems. If there is a -- in the line, strip all options after
# it...its for the source building process.
args = !ARGV.include?("--") ? ARGV.clone : ARGV[0...ARGV.index("--")]

Gem::GemRunner.new.run(args)

And it works perfectly