From: "NAKAMURA, Hiroshi" Date: 2007-09-28T11:24:08+09:00 Subject: [ruby-dev:31878] Re: Import RubyGems to Ruby 1.9 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Tadayoshi Funaba wrote: > 今更って感じかもしれないけど、require 'rubygems' しただけで、結構いろ > いろ読んじゃいますよね。 > > $ ruby -r rubygems -e 'p $"' > ["rbconfig.rb", "rubygems/rubygems_version.rb", "thread.so", "thread.rb", "rbconfig/datadir.rb", "rubygems/user_interaction.rb", "socket.so", "timeout.rb", "net/protocol.rb", "uri/common.rb", "uri/generic.rb", "uri/ftp.rb", "uri/http.rb", "uri/https.rb", "uri/ldap.rb", "uri/mailto.rb", "uri.rb", "net/http.rb", "stringio.so", "yaml/error.rb", "syck.so", "yaml/ypath.rb", "yaml/basenode.rb", "yaml/syck.rb", "yaml/tag.rb", "yaml/stream.rb", "yaml/constants.rb", "rational.so", "rational.rb", "date/format.rb", "date.rb", "yaml/rubytypes.rb", "yaml/types.rb", "yaml.rb", "zlib.so", "rubygems/remote_fetcher.rb", "forwardable.rb", "digest.so", "digest.rb", "digest/sha2.rb", "parsedate.rb", "time.rb", "rubygems/source_index.rb", "rubygems/version.rb", "rubygems/specification.rb", "openssl.so", "openssl/bn.rb", "openssl/cipher.rb", "openssl/digest.rb", "openssl/buffering.rb", "fcntl.so", "openssl/ssl.rb", "openssl/x509.rb", "openssl.rb", "rubygems/gem_openssl.rb", "rubygems/security.r b", "rubygems/custom_require.rb", "rubygems.rb"] ruby-coreのほうでのRubyGemsチームとの議論によれば、以下が必要になるそう です。 YAML/Syck, WEBrick, the digest libraries, rbconfig, rdoc, thread, optparse, forwardable, time, open-uri, uri, net/http, fileutils, zlib, stringio, socket, tempfile, pathname, test/unit で、YAML/SyckとWEBrickへの依存は外せるかも、という話になってます。 > gem コマンドがどんな風に構成されていても気にならないのですが、利用者の > 環境に影響を与える部分は気になりますが、こういうもんなんでしょうか。 先にrequireされると「利用者の環境に影響を与える」ということはない、とい う前提にたっているのだと思います。で、その前提は守られるべきだとも思いま す。なので、「こういうもん」じゃないでしょうか。 YAMLやActiveSupportみたいに各クラスにメソッドを追加するのは、ライブラリ としては勘弁してほしい。 > たとえば、この場合、date が既に読まれていますが、別の版の date を利用 > することは可能ですか。 rubygemsを読んだ後に$LOAD_PATHを変える、そして別のものを読みたい、という ことですよね。それは(やろうとすればなんでもできるものの)、Rubyとしては 想定外、ということになると思います。'date'というfeatureはプロセスに対し て1つだけ。 なので、-Iで適切な場所を$LOAD_PATHに加えて、rubygemsにも「別の版」のdate を読ませないといけない。 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Cygwin) iQEVAwUBRvxlqR9L2jg5EEGlAQKHLAf+MFaY9bmPQofBtEaY7TtkZ9QW+6h8RkAE p18qyDoGxPpFe39D5uDTihGPMmoaV35MVvrFNDjlJmgWFN9i6Vj3IYKdRP5DRu3D hFg/DgTXV0CaeQ4T9qR5qm0/SLWI/QGS/S/wgTiuSoUApzWNg74a5zxtjHk8tUTA Yx0ItywvdtakUxHh/fQYXHav04CPpiRwPJ9a5U7NBd2rfSv0E/FpDFpH5YzHH6F/ vEmYFrB2pYBHplbc0tjBk/Tbysb2iS2jkMTLtKo5rdiOdDW7Qjml0zSnZMTVZHD9 eQdX1xxnd0QT8tEmUHF/imOLjq+zqtV63CB0dipQmD5fmyWnoUESWw== =e6Ps -----END PGP SIGNATURE-----