Bug #1163 [ruby-dev:38020]

gem_prelude raise NoMethodError if require uninsalled gem with version.

Added by Kyosuke MOROHASHI 399 days ago. Updated 336 days ago.

Status :Closed Start :02/15/2009
Priority :Normal Due date :
Assigned to :- % Done :

100%

Category :-
Target version :-
ruby -v :

ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-darwin9]


Description

gemをKernel#gemで読み込む際、
(1)インストールされていないgemで、かつ
(2)バージョンを指定した場合に

NoMethodErrorが発生します。ここはGem::LoadErrorであるべきではないでしょうか。
ご検討お願いします。

# インストールされていないgemをバージョン付きで読み込むとNoMethodError
$ ruby19 -ve "p gem 'rackie', '>= 1.0.0'"
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-darwin9]
<internal:gem_prelude>:249:in `push_gem_version_on_load_path': undefined method `<=>' for nil:NilClass (NoMethodError)
        from <internal:gem_prelude>:14:in `gem'
        from -e:1:in `<main>'

# インストールされていないgemを読み込むとGem::LoadError
$ ruby19 -ve "p gem 'rackie'"            
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-darwin9]
<internal:gem_prelude>:234:in `push_gem_version_on_load_path': Could not find RubyGem rackie (>= 0) (Gem::LoadError)
        from <internal:gem_prelude>:14:in `gem'
        from -e:1:in `<main>'[telperion:~/tmp/rails/actionpack]
19:47# moro[1]$ 

# インストールされているgemをバージョン付きで読み込むとGem::LoadError
$ ruby19 -ve "p gem 'rack', '>= 1.0.0'"  
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-darwin9]
/Users/moro/opt/ruby191/lib/ruby19/1.9.1/rubygems.rb:636:in `report_activate_error': RubyGem version error: rack(0.9.1 not >= 1.0.0) (Gem::LoadError)
        from /Users/moro/opt/ruby191/lib/ruby19/1.9.1/rubygems.rb:141:in `activate'
        from /Users/moro/opt/ruby191/lib/ruby19/1.9.1/rubygems.rb:49:in `gem'
        from <internal:gem_prelude>:261:in `push_gem_version_on_load_path'
        from <internal:gem_prelude>:14:in `gem'
        from -e:1:in `<main>'[telperion:~/tmp/rails/actionpack]

gem_prelude_raise_right_error.patch (1.2 KB) Kyosuke MOROHASHI, 02/15/2009 07:54 PM

Associated revisions

Revision 23208
Added by nobu 336 days ago

  • gem_prelude.rb (Gem::QuickLoader#push_gem_version_on_load_path): check for requirement if the gem is installed. a patch from Kyosuke MOROHASHI at [ruby-dev:38020].

History

02/26/2009 10:54 AM - Akira Matsuda

+1 for this patch.
同じ問題でハマりました。もろはしさんの提案どおりの仕様でよいと思います。

04/19/2009 01:27 PM - Nobuyoshi Nakada

  • Status changed from Open to Closed
  • % Done changed from 0 to 100
Applied in changeset r23208.

Also available in: Atom PDF