exerbで作ったバイナリのディレクトリを取得するには

なぜかexerbで作ったruby→exeな実行ファイルは、

  • ダブルクリックしたとき → カレントディレクトリ = 実行ファイルのある場所
  • ファイルをドロップしたとき → カレントディレクトリ = C:/WINDOWS/INF ??

というよく解らない動作をする。

実行ファイルのあるディレクトリのファイルを使って動作するスクリプトでは、これでは困る。

そこで、exerbに用意されている ExerbRuntime クラスを使えば、そういったことが可能だ。

path = Dir::pwd
if defined? ExerbRuntime
	path = File.expand_path(File.dirname(ExerbRuntime.filepath))
end
open(path + "/" + "hoge.rb") {|f|
    ...

等とすれば良いだろう。これならrubyスクリプトを直接実行した時も(多分)動く。


ちなみに、exerbではexeファイル内に画像やデータファイルを取り込むことも出来る。
その場合も、ExerbRuntimeクラスを使って、それらのファイルを開くことができる。