Ruby-on-rails – Can’t update RubyGems

macosruby-on-railsrubygems

I'm having difficulties updating RubyGems from version 1.1.1 to newest. I've tried the following:

gem update

Result:

Updating installed gems
Bulk updating Gem source index for: http://gems.rubyforge.org/
Nothing to update

and

gem install rubygems-update

Result:

Bulk updating Gem source index for: http://gems.rubyforge.org/
Bulk updating Gem source index for: http://gems.rubyforge.org/
ERROR: Error installing rubygems-update:
    rubygems-update requires builder (>= 0)

and

gem install rubygems-update update_rubygems

Result:

Bulk updating Gem source index for: http://gems.rubyforge.org/
Bulk updating Gem source index for: http://gems.rubyforge.org/
ERROR: Error installing rubygems-update:
    rubygems-update requires builder (>= 0)
ERROR: could not find update_rubygems locally or in a repository

Then I checked, as suggested by theIV on a similar question, whether I had http://gems.rubyforge.org/ in my remote sources. Here's the gems environment:

RubyGems Environment:
  – RUBYGEMS VERSION: 1.1.1
  – RUBY VERSION: 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
  – INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8
 – RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  – RUBYGEMS PLATFORMS:
    – ruby
    – universal-darwin-9
  – GEM PATHS:
    – /Library/Ruby/Gems/1.8
    – /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
  – GEM CONFIGURATION:
    – :update_sources => true
    – :verbose => true
    – :benchmark => false
    – :backtrace => false
    – :bulk_threshold => 1000
  – REMOTE SOURCES:
    – http://gems.rubyforge.org

So, yeah, any ideas?

Best Answer

There is no need to take such drastic steps as completely rebuilding Ruby, reinstalling Rubygems from scratch or installing a version manager to solve this problem. There is simply a dependency cycle introduced by the release of hoe 2.3.0:

rubygems-update 1.3.5 requires (among other things) hoe-seattlerb
hoe-seattlerb requires hoe >= 2.3.0
hoe >= 2.3.0 requires rubygems >= 1.3.1

I wrote the blog post linked to by zipizap. To recap:

  1. If you've already tried to update, uninstall the latest rubygems-update first: sudo gem uninstall rubygems-update -v 1.3.5
  2. Update to 1.3.0: sudo gem install rubygems-update -v 1.3.0
  3. sudo update_rubygems
  4. Then update to latest: sudo gem update --system

With the release of Rubygems 1.3.6, it looks like this problem may be gone. From the release notes:

  • Development deps are no longer added to rubygems-update gem so older versions can update sucessfully.
Related Topic