2011年10月23日

[ruby-list:48490] Re: Windows で $0 へ代入すると刈り取られる

なかだです。

(11/10/22 12:51), yamada masaki wrote:
> __FILE__ 辺りを見た方が良いんじゃないかなぁと思います

__FILE__は現在のソースファイルの名前ですから、起動されたスクリプトとは
一般に別です。

> 2011年10月22日11:46 5.5 <5.5@xxxxx>:
>> ある小さなライブラリーを書きました。
>> それは,そのライブラリーを呼び出したスクリプトの存在するディレクトリー
>> の直下にあるファイルやディレクトリーをいじったりします。
>> そのため,内部で File.dirname($0) を利用しています。

mkmf.rbが、extconf.rbのあるソースディレクトリ直下のソースファイルを羅列
するという、よく似た事をしています。

>> そこまではよかったのですが,その単体テストを実行するのに rake を使った
>> ところ,$0 が rake のパスになってしまって都合が悪かったのです。

mkmf.rbのケースでは、extmk.rbがやはり同じ状況です。

>> そこで,テストスクリプト中で $0 を書き換えてやればいいと思ったところ,
>> どうも動作が期待と違ったので,調べてみた次第です。
>>
>>
>> もし上記のような場合にどのようなやり方がよいのかご教示いただければたい
>> へんありがたいです。

extmk.rbではaliasで$0を普通のグローバル変数に置き換えています。

$progname = $0
alias $PROGRAM_NAME $0
alias $0 $progname

$0を$PROGRAM_NAMEにaliasしているのは昔は組み込みではなかったためなので、
今は不要です。

--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦


投稿者 xml-rpc : 2011年10月23日 12:24
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/107053
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。