まつもと ゆきひろです

In message "Re: [ruby-dev:31970] Re: Import RubyGems to Ruby 1.9"
    on Mon, 8 Oct 2007 11:47:18 +0900, "NAKAMURA, Hiroshi" <nakahiro / sarion.co.jp> writes:

|嫌な匂いがしたのでIRCへ行き、田中さんの意図を確認してきました。で、以前
|のruby-devの議論の中で結論が出ておらず、今回の議論でもカバーされていない
|点がある、ということに気付きました。
|
|■田中さんの意見のサマリ
|
|田中さんは[ruby-dev:27378]で、RubyGemsのrubyへの統合の状態として以下の3
|つを挙げています。
|
|(1) RubyGems が添付されていない ruby
|(2) RubyGems が添付されているが自動的には require しない ruby
|(3) RubyGems は添付されていて自動的に require する ruby
|
|そして、
|
| A. アプリケーション作者、ライブラリ作者の中には、ユーザがRubyGemsを使い
|    たい場合でもそうでない場合でもよいように、以下のようなおまじないを
|    入れる人が出てくるだろう。
|      require "rubygems" rescue LoadError
|
| B. RUBYOPT=rubygemsにしろ、require "rubygems" rescue LoadErrorにしろ、
|    おまじないは不幸である。
|
| C. 最終的に(3)の状態に到達するのであれば、おまじないは不要。
|
|と指摘しています。田中さんとしては、(1) or (3)であり、(2)には反対、とい
|うことだと思います。この議論は[ruby-dev:27378]で打ち切られ、残念ながら煮
|詰まらなかったようです。

私もakrさんと話をして、以下のように思いました。

  * RubyGemsは私の想像以上に大きい
  * その上たくさんのライブラリをrequireする
  * 結果、メモリ消費量が馬鹿にならない
  * ので、むやみにrequire 'rubygems'するのは考えもの
  * 少なくとも必ずrequireはできない

ですから、3には賛成しません。で、Bには賛成するので2もあまり
嬉しくなさそうです。

で、どうするかですが、

(4) RubyGemsを添付した上で、gemをロードする機能だけをもった小
    さなライブラリをコアに追加する。具体的にはprelude.rbで
    requireする

のはどうだろうか、という気分です。これならメモリ消費量の問題
も、おまじないの問題も回避できそうです。技術的に可能なのか、
どのくらい大変なのかはわかってませんが。

どうも、ロードするだけでもgemspec全部読んでるみたいなんで、そ
のままではSyckやらは必須ですし、gemを見つける仕組みから考え直
す必要がありそうで、そうなるとかなり大仕事になりそうです。

                                まつもと ゆきひろ /:|)