小松です。

In message of [ruby-list:15843] Re: cannot install ruby-gtk into FreeBSD 2.2.x
    on 1999/8/3 05:23:47 gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) wrote:
|>そうすると、ruby自身のargv[0]を取れる必要がありますが、
|>できるのかな?

|ってのは、考えが甘い??

# まだ、ここまでする必要があるかという件に結論は出ていませんが……

えーと、
    ruby -Xgtk extconf.rb
    ruby -Xgtk -X../gtk -X/home/lang/ruby-ext/gtk extconf.rb
というような場合を考慮しなくてよいなら、悪くないと思います。

この場合を考慮すると、rubyを起動したときのカレントディレクトリ
か、-Xの引数のリストかそれをマージしたものが必要になります。

考慮しなくてよい場合、lib/mkmf.rbの、
    RUBY = #{CONFIG["ruby_install_name"]}
を
    ruby_interpreter = File.expand_path(`which #{RUBY_INTERPRETER}`)
        ……
    RUBY = #{ruby_interpreter}
にすればいいわけですが、whichを呼ぶのはよろしくないので、
相当するルーチンがあればよいかと。

ありましたっけ?

mswin32では、常にフルパスがくるので、
    RUBY = #{RUBY_INTERPRETER}
でよいですけどね。

== Solaris 2.5.1 == % ruby -ve 'puts RUBY_INTERPRETER' ruby 1.3.6 (1999-07-28) [sparc-solaris2.5.1] ruby % /usr/local/bin/ruby -ve 'puts RUBY_INTERPRETER' ruby 1.3.6 (1999-07-28) [sparc-solaris2.5.1] /usr/local/bin/ruby % cd /usr/local/bin % ./ruby -ve 'puts RUBY_INTERPRETER' ruby 1.3.6 (1999-07-28) [sparc-solaris2.5.1] ./ruby % % which ruby /usr/local/bin/ruby % which /usr/local/bin/ruby /usr/local/bin/ruby % which ./ruby ./ruby % == mswin32 == C:\>ruby -ve 'puts RUBY_INTERPRETER' ruby 1.3.6 (1999-07-28) [i386-mswin32] C:\USR\LOCAL\BIN\RUBY.EXE C:\>\usr\local\bin\ruby -ve 'puts RUBY_INTERPRETER' ruby 1.3.6 (1999-07-28) [i386-mswin32] C:\USR\LOCAL\BIN\RUBY.EXE C:\>cd \usr\local\bin C:\usr\local\bin>.\ruby -ve 'puts RUBY_INTERPRETER' ruby 1.3.6 (1999-07-28) [i386-mswin32] C:\USR\LOCAL\BIN\RUBY.EXE C:\usr\local\bin> -- 小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>