Exerb は Ruby スクリプトを Ruby のインストールされていない環境でも実行可能な exe ファイル化することができるという、仕事で Windows 環境を避けられない Ruby ユーザにとって最高に便利で足を向けて寝られない品の一つ。
その挙動で、軽くはまったのでメモ。(考えてみれば当たり前の動作なのだけど)
Exerb で作成した exe ファイルに対して、引数にしたいファイルを D&D で指定した場合、実行時パスがユーザのホームディレクトリに設定されてしまう。そのため、File.expand_path などで期待したパスを得られなくて困ることがある。
File.expand_path(__FILE__).dirname Pathname.new($0).expand_path.dirname で期待するパスを取得したいときなどは、exe のショートカットを作成し、作業フォルダを exe ファイルのあるフォルダに設定。(デフォルトでそのようになる。)その上で、exe にファイルを D&D したい場合はショートカット経由で利用するようにすると、期待どおりの動作になる。
ついでに、もう一つの注意点として、$0 や __FILE__ で得られる値は rb ファイル時点の名称となる。仮に exe ファイルを作成した後に名称を変更したりした場合も、やっぱり Exerb によって exe 化した際の rb ファイルの名前を維持する。実行中の exe ファイル名を取得する方法は不明。
D&D はドラッグアンドドロップね。念のため。