なかだです。 At Wed, 1 Aug 2007 13:18:30 +0900, NAKAMURA, Hiroshi wrote in [ruby-dev:31320]: > 1. ruby/1.9.1のRubyGemsは、プラットフォーム依存のgemを扱うべきか? > > - ruby/1.9.1のRubyGemsに、バイナリgemの取り扱いは必要か? > 誰からも反対がなければ、この件はRubyGemsチームに任せる。 > (注: プラットフォーム依存のgemは現行未対応で、RubyGemsチームとして > は、今月中に対応予定だそうな) gems自体は拡張ライブラリは含んでないんですよね。 > 2. RubyGemsは、ruby/1.9.1に、requireをフックする機能の追加を > 必要とするか? 要件は? > > - RubyGemsはパッケージングシステムの1つとして標準添付するのみ。なの > で、とりあえずコマンドラインオプションの-rによるrequireをフックする > 機能だけ追加すればよい(注: 現状のrubyではフックできない) 「パッケージングシステムの1つ」という位置づけであれば、「他のパッ ケージングシステム」も考えられるわけで、グローバルのrequireを銘々 が直接置き換えるというのは望ましくないと思います。 > - 中田さん、以前にこの機能について途中まで考えた、と聞いたんだけど、 > なんか共有できるネタはない? まず、今のrequireのやってることを、ロード済みのライブラリのチェッ クとか排他処理とかラッパーとか$SAFEの処理とかを除いて簡単にいう と、概ねこんなところ。 def require_internal(feature) exts = loadable_exts(feature) found = nil $LOAD_PATH.find {|path| found = find_file(path, feature, exts)} or raise LoadError, "no such file to load -- %s", feature load_file(found) end この中で、find_fileとload_fileで示した部分を、それぞれ以下のよう に(Stringじゃなかったら?)メソッドを呼ぶ形にしてはどうか、という のが一案。 path.find_file(feature, exts) found.load_file() 登録しておいたブロックが呼ばれる、というのも最初に考えてたんで すが、これだと不要な場合にも呼ばれるという点がいまひとつ。 > - I was hoping we could use rb_funcall to invoke a Kernel#require in > require_libraries() rather than calling the C rb_require directly. > Is this possible? (注: 中田さんよろしく) 上で書いた理由から、できればこれは避けたいというのが個人的希望。 > 3. 標準インストーラは、BINDIRに、RubyGems関連のどんなコマンドを > インストールするべきか? 従来のコマンドにはこれだけある; > - gemコマンドだけインストールする。 > (注: 他のコマンドは、RubyGemsチームによってgemコマンドに集約予定) cvsとかsvnのようにサブコマンドにするということですよね。その場 合はシェル用のcompletionの設定も一緒にインストールしてほしいで すが。 > 4. $LOAD_PATHの順序はどうなるべきか? > 4-2. rubygemsをrequireした後は: > [-I, ENV_RUBYLIB, GEMs, SITELIBDIR, RUBYLIBDIR, .] > - これについてはRubyGemsチームに任せるべき。だってopt-inだし。 requireの枠組だけ作っておくだけにして、そのへんのポリシーは任せ ていいんじゃないでしょうか。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦