From: Takashi & Kayoko Sano Date: 2003-07-22T23:59:24+09:00 Subject: [ruby-list:37937] Re: __FILE__ in mswin32 OOTANI TAKASHIさん、こんにちは。 初心者ですが、私も同じことで悩んだので何かの役に立つと思い 投稿させていただきます。 OOTANI TAKASHI wrote: > "#{__FILE__}: #$!" だと、フルパス名になってしまいます。そこで、 > "#{File.basename(__FILE__,'.rb')} #$!" > としたのですが、パスセパレータの / と \ の違いでbasenameが得られま > せん。 > 質問1: > エラーメッセージにスクリプト名を出す、 > エレガントなやり方は無いものでしょうか? ruby1.7からはパスセパレータとして \ も認識されるようになっています。 ですから、現状のruby1.8のプレビュー版を使うか、正式リリースを待てば よいかも。以下が参考になると思います。 http://kt-lab.ics.nitech.ac.jp/~sugiura/document/ruby/refm0250.html 現状では私も1.6.8を使っているので、とりあえずWIN32OLEでWindowsの FileSystemObjectを呼び出してFile.basename、dirnameなどのメソッドを オーバーライドするモジュールを作り、それをスクリプトからrequireして 急場をしのいでいます。これだと1.8がリリースされるなどしてこのモジュ ールが不要になってもrequire文だけを削除すればいいだけですから。 個人的にメールをくださればあとでそのモジュールをお送りしてもかまい ません。 > 質問2: > File::ALT_SEPARATOR の持っている心を教えてください。 これはフルパスを分割する際に使うのではなく、自分でパスをつなぎ合わ せるときに使うものでは。 では… ------------------------------------ テクニカルライター/翻訳者 佐野剛史 Eメール: tksano@m3.kcn.ne.jp URL: http://www3.kcn.ne.jp/~tksano/ ------------------------------------