From: Sho Hashimoto Date: 2009-12-05T00:19:48+09:00 Subject: [ruby-dev:39838] [Bug #2439] gem_prelude.rbとlib/rubygems.rbでKernel#gemの可視性が異なる Bug #2439: gem_prelude.rbとlib/rubygems.rbでKernel#gemの可視性が異なる http://redmine.ruby-lang.org/issues/show/2439 起票者: Sho Hashimoto ステータス: Open, 優先度: Normal ruby -v: ruby 1.9.2dev (2009-12-04 trunk 25993) [i686-linux] lib/rubygems.rbではKernel#gemがprivateになっていますが、gem_prelude.rbではそうではないため、以下のような事ができてしまいます。 $ irb irb(main):001:0> 1.gem "minitest", "1.4.2" => true irb(main):002:0> 1.gem "rake", "0.8.7" NoMethodError: private method `gem' called for 1:Fixnum from (irb):2 from /usr/local/bin/irb1.9.2-trunk:12:in `
' irb(main):003:0> gem "rake", "0.8.7" => true rubygemsに詳しくないので嬉しくない修正かもしれませんが、以下のようにすると1度目の1.gemから「NoMethodError: private method `gem' called ...」となりました。 --- gem_prelude.rb (revision 25993) +++ gem_prelude.rb (working copy) @@ -16,6 +16,8 @@ Gem.push_gem_version_on_load_path(gem_name, *version_requirements) end + private :gem + end module Gem ---------------------------------------- http://redmine.ruby-lang.org