From: Tanaka Akira Date: 2007-10-25T03:21:45+09:00 Subject: [ruby-dev:32151] Re: Import RubyGems to Ruby 1.9 In article , Yukihiro Matsumoto writes: > (a) RubyGemsを利用しない(Gemでインストールしたライブラリを > 使わない) > (b) Gemでインストールされたライブラリはrequireするが、それ > 以外のRubyGemsの機能は使わない > (c) Gemの機能をフルセットで使う > > というみっつの局面で、意識的にRubyGemsを使う(c)以外のことを考 > えています。akrさんのローダでは(a)しか救済しませんよね。 はい。そのとおりです。 > (b)に > おいては、Gemでインストールされたライブラリを使っている以上、 > rubygemsのロード(およびそれにともなうメモリ消費量のペナル > ティ)は当然だ、という考え方もあるとは思いますが、一般ユーザに > とってライブラリがGemでインストールされたかどうかは関心がない > (and 制御できない)ことなので、メモリ消費量的ペナルティもない > 方がいいなあと。無茶言ってますかね。 それを狙うなら、なおのこと gem なライブラリを default で require できることが重要だと思います。 (b) と (c) の違いはスクリプトが require 'rubygems' するかど うかで判断されることになります。そうすると、(b) のケースにお いてプログラマが require 'rubygems' を書かない (書く必要が無 い) という状況を作り上げるのが重要です。 これは、default で require できないのであれば、 require 'rubygems' と記述するのはありそうなことだからです。 そうすると、そのスクリプトは (c) とみなされるので、たとえ (b) のメモリ消費を改善してもその恩恵が受けられません。 また、(a) のケースを救済すれば、以前より不幸になることはなく せます。つまり、RubyGems を以前から使っていた人は以前と同様 のメモリ消費で利用できるわけです。 というわけで、 * (a) のケースを救い、 * (b) のケースで救える可能性を増やすために ローダをつけておくのがいいんじゃないでしょうか。 実際に (b) のケースを救えるかというと、(あの IRC セッション で出ていた) library stub がひとつの解ではあるのですが、 それは RubyGems が以前に捨てたやりかたなので、その経緯を調べ るところから始めないとなんとも。 -- [田中 哲][たなか あきら][Tanaka Akira]