Exerb に D&D でパラメタ引数とするファイルを渡したいときの Tips

by tanabe on December 04, 2007

コメントで教えて頂いたとおり、ExerbRuntime の filename, filepath で対応する方が正しいです。便利!

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 はドラッグアンドドロップね。念のため。


この記事へのコメント
>> 実行中の exe ファイル名を取得する方法は不明。

Exerb - クラスリファレンス
http://exerb.sourceforge.jp/man/doc/class.ja.html

 ExerbRuntimeモジュール
 "filename() 実行ファイルのファイル名を取得します。"
Posted by anonymous at December 05, 2007 08:59
どうもありがとうございます!
クラスリファレンスに載っていたんですね。お恥ずかしい。
これで上記のショートカット云々の対応も要らなくなりますね。
Posted by tanabe at December 06, 2007 03:05