[ruby-list:48990] Re: 1234567890 gemについて

From: "NARUSE, Yui" <naruse@...>
Date: 2012-11-02 21:09:15 UTC
List: ruby-list #48990
(2012/11/01 22:59), masa wrote:
> Quineが好きな畠山です。
> 
> 先日遠藤さんの1234567890(gem)のインストール(ruby-1.9.3p286, Mac OS X
> 10.6.8)に失敗して、その後Rubyソースをコンパイルする毎に以下のエラーが出るようになってしまいました(trunkでなくても、最新1.9.3安定板でも同様です)。
> 
> /Users/masa/Desktop/test/ruby-trunk-37407/lib/rubygems/specification.rb:287:in
> `block in _resort!': undefined method `nonzero?' for nil:NilClass
> (NoMethodError)
> 	from /Users/masa/Desktop/test/ruby-trunk-37407/lib/rubygems/specification.rb:284:in
> `sort!'
> 	from /Users/masa/Desktop/test/ruby-trunk-37407/lib/rubygems/specification.rb:284:in
> `_resort!'
> 	from /Users/masa/Desktop/test/ruby-trunk-37407/lib/rubygems/specification.rb:278:in
> `_all'
> 	from /Users/masa/Desktop/test/ruby-trunk-37407/lib/rubygems/specification.rb:411:in
> `each'
> 	from /Users/masa/Desktop/test/ruby-trunk-37407/lib/rubygems.rb:483:in `map'
> 	from /Users/masa/Desktop/test/ruby-trunk-37407/lib/rubygems.rb:483:in
> `find_files'
> 	from /Users/masa/Desktop/test/ruby-trunk-37407/lib/rdoc/rdoc.rb:503:in
> `<top (required)>'
> 	from ./bin/rdoc:18:in `require'
> 	from ./bin/rdoc:18:in `<main>'
> 
> ソースコード中のlib/rubygems/specification.rbのL287の
> 
> def self._resort!
>     @@all.sort! { |a, b|
>       names = a.name <=> b.name
>       next names if names.nonzero?
> 
> を
> 
> def self._resort!
>     @@all.sort! { |a, b|
>       names = a.name <=> b.name
>       next names if names and names.nonzero?
> 
> とでもすれば、とりあえずmakeできますが、毎度これをするのは面倒なので、どなたか解決方法をご存じないでしょうか。
> たぶんどこかにインストールしたgemの名前情報がシステムのどこかに保存されているせいだと推測しているのですが。以下のようにデバッグプリントすると
> 
>       print "a.name = ", a.name, " b.name = ", b.name, "\n"
> 
>       a.name = 1234567890 b.name = kramdown
> 
> というように出るので確かに1234567890が原因だとは思います(ちなみにkramdownはインストールされているgemの一つです)。ちなみにgem
> listとしても1234567890は出力されません。なのでgem uninstallもできません。

Ruby のインストール先や、~/.gem 下あたりを、
grep -r 1234567890 してみれば何かが見つかるんじゃないでしょうか。

-- 
NARUSE, Yui  <naruse@airemix.jp>

In This Thread