2010/8/26 Lucas Nussbaum <lu...@lucas-nussbaum.net>: > That worked fine until Ruby 1.9.1, but apparently a change in Ruby > 1.9.2 broke Rubygems 1.3.7. This is exhibited by two bugs: [...] > - rubygems doesn't work: > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=588125
I trace the following error: -- $ gem1.9.1 list /usr/lib/ruby/1.9.1/rubygems.rb:634:in `path': undefined method `path' for #<Gem::ConfigFile:0x000000014a09d8> (NoMethodError) -- I got a result: -- $ ruby1.9.1 -e 'p Gem.path; require "rubygems"; p Gem.path' ["/home/akira/.gem/ruby/1.9.1", "/usr/lib/ruby/gems/1.9.1"] /usr/lib/ruby/1.9.1/rubygems/source_index.rb:68:in `installed_spec_directories': undefined method `path' for Gem:Module (NoMethodError) $ ruby1.9.1 -e 'p Gem.path; begin; require "not exist"; rescue LoadError; end; require "rubygems"; p Gem.path' ["/home/akira/.gem/ruby/1.9.1", "/usr/lib/ruby/gems/1.9.1"] ["/home/akira/.gem/ruby/1.9.1", "/var/lib/gems/1.9.1"] $ ruby1.9.1 -e 'p Gem.path; Gem::QuickLoader.remove; require "rubygems"; p Gem.path' ~ ["/home/akira/.gem/ruby/1.9.1", "/usr/lib/ruby/gems/1.9.1"] ["/home/akira/.gem/ruby/1.9.1", "/var/lib/gems/1.9.1"] -- There is difference: -- $ diff -u ruby_1_9_2/lib/rubygems.rb /usr/lib/ruby/1.9.1/rubygems.rb |head -20 --- ruby_1_9_2/lib/rubygems.rb 2010-08-02 09:53:36.000000000 +0900 +++ /usr/lib/ruby/1.9.1/rubygems.rb 2010-08-26 07:05:24.000000000 +0900 @@ -4,14 +4,8 @@ # All rights reserved. # See LICENSE.txt for permissions. #++ - gem_disabled = !defined? Gem -unless gem_disabled - # Nuke the Quickloader stuff - Gem::QuickLoader.remove -end - require 'rubygems/defaults' require 'thread' require 'etc' @@ -492,8 +486,26 @@ ## -- (ruby_1_9_2 is tree of ruby_1_9_2 in the svn. /usr/lib/ruby/1.9.1/rubygems.rb is provided rubygems-1.3.1.deb) When ruby requires "rubygems", rubygems.rb will require "rubygems/defaults/operating_system". And ruby re-requires "rubygems" internally because the file is not given. On the 2nd require "rubygems", Gem::QuickLoader.remove is called. The method removes Gem module methods defined in gem_prelude. But the 2nd require "rubygems" don't executed because ruby interpreter is already in requiring rubygems. So some pre-defined Gem module methods is missing and chance of new definition of these methods isn't given. Calling Gem::QuickLoader.remove in top of rubygems.rb can avoid "circular require" of rubygems. (It sets @loaded_full_rubygems_library) -- ay <ak...@arika.org>, <ak...@debian.org>, ... -- To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org