[exerb-dev:0513] Re: ruby1.8.6 重複ロード

Back to archive index

Yuya Kato yuyak****@gmail*****
2007年 3月 20日 (火) 17:14:19 JST


Yuyaです。

> vrubyの例では、以下の修正で動作することは確認したのですが、ご意見を頂き
> たく。
> 方針: soの場合、rb_preloadedではなくrb_feature_p を利用してロード済みか
> どうかを判断する。
ruby-devの該当スレッドとパッチを軽く読みました。
残念ながら詳しく見る余裕はないので少々無責任な発言ですが、
適用して良いと思います。

細かい点を言えば:

* rb_feature_p関数のアクセス修飾子を直接変更するのではなく
  rb_feature_p関数を呼び出すだけの非staticな関数を追加して
  Exerb側からはその関数を使用すると、パッチが読みやすくなるかも
  しれません。

* 下記の変更の変更は不要かと思います。
> -		const char *ext = ::strrchr(RSTRING_PTR(feature), '.');
> +		const char* ext = strrchr(RSTRING_PTR(feature), '.');
改めてexerb.cppを読んでみると、「type* name」だったり「type *name」
だったりと、統一感がないですね。

 require周りはきちんと整理したいと以前から思っているのですが、
現状さっぱりです。Ruby 1.9でもrequireの仕様がかわったはずなので、
そちらも調べようと思いつつ・・・。

やろうと思いつつ、実現できていない項目としては:

* Ruby 1.8のrequireの仕様を調査
* Ruby 1.9のrequireの仕様を調査
* require周りのコールグラフの作成
* 拡張子、内部/外部などの優先順位の整理
* load、autoloadへの対応
* 真面目なパス解析

などがあります。

時間があれば・・・。

---
Yuya.




exerb-developer メーリングリストの案内
Back to archive index