いがらしです。

「[ruby-list:15815] Re: cannot install ruby-gtk into FreeBSD 2.2.x」で 、
WATANABE Hirofumi <eban / os.rim.or.jp>さんは書きました:

> わたなべです.
> 
> WATANABE Hirofumi <eban / os.rim.or.jp> writes:
> 
> ::|スクリプトがminiruby上で動いているということを
> ::|認識するにはどうしたらいいでしょうか?
> ::
> ::インタプリタ名を得る方法が現状ではないですね(Perlの$^Iのよう
> ::なの)。良い変数名があれば(あるいはAPIがあれば)、取り込みたい
> ::ものですが。
> :
> :この場合の本質は miniruby 上で動いているじゃなくて extmk.rb 
> :から load されてるかどうかです.
> 
> すみません. 全然本質じゃないですね. もともとは extconf.rb じゃ
> なくて makedefconst.rb の話だったんですね.

そうなんです。
サブディレクトリのMakefileでmakedefconst.rbを呼ぶために
このMalefileにrubyインタプリタの名前を埋め込んでいるので。

> やっぱり extconf.rb に移動しちゃうのが簡単かな.

僕もそう考えたんですが……

makedefconst.rbでやっているのは定数の定義をするCプログ
ラムの生成です。これを本来configurationための
extconf.rbでやってしまうのはちょっと気持ち悪いなぁと
感じて他の方法を探していました。

やりたいことをもう一度書くと、「拡張ライブラリのコンパ
イルにrubyスクリプトを使いたい」、つまり

・拡張ライブラリのMakefileからrubyスクリプト(≠extconf.rb)を呼び出す
・このスクリプト中でライブラリ(ftools, rbconfigなど)をrequireする

です。

前者はインタプリタ名が分かればそれをMakefileに埋め込む
ことによって、さらにextconf.rbが呼び出されたときの
$LOAD_PATHも-Iオプションで渡すようにして後者も解決でき
るでしょうか。いまのところこれくらいしか思いつきません。

----
五十嵐  宏  (Hiroshi IGARASHI)