2011年10月24日

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

むらたです。

(2011.10.22 11:46 ), 5.5 wrote:
> そして,そのライブラリーの単体テストを書きました。
>
> そこまではよかったのですが,その単体テストを実行するのに rake を使った
> ところ,$0 が rake のパスになってしまって都合が悪かったのです。
>

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

$0 に直接依存しないようにプログラムを書けば良いです。
たとえば、以下のように適当なモジュールを用意して、
その中で $0 を返す関数を定義します。

module Application
def Application.program_name
$0
end
end

そして、の関数の外で $0 を使用している箇所を
すべて program_name に置き換えましょう。

RSpec では以下のようにすることで、5.5 さんがやろうとしている
パスの置き換えを実現できます。

describe "..." do
before do
Application.stub(:program_name).and_return("/path/to/application")
end

...
end

--
Kenta Murata <muraken@xxxxx>
1D69 ADDE 081C 9CC2 2E54 98C1 CEFE 8AFB 6081 B062


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




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