高橋征義です。

石井さんの「RubyによるWin32OLEプログラミング」の、
「FileSystemObjectを使う」
http://member.nifty.ne.jp/masarl/article/ruby-win32ole.rsrc/file-system-object.html
を読んでちょっと悲しい気持ちになったのですが、現状のRubyにおける
ファイルセパレータの扱いについては、

 * Rubyのスクリプト内では、ファイルセパレータは「/」が基本。
 * Windowsなどの環境でもFile::SEPARATORは必ず「/」になる。
 * Ruby内ファイルセパレータで記述されたpath表記を、その環境のファイル
   システムに合わせた表記にするためのメソッドは特に用意されていない。

という理解であってますか?

で、自分で変換する(例えば、Windows上でexpand_pathを使った場合に、
ファイルセパレータを「\」にする)には、

  path = expand_path(hoge)
  if File::ALT_SEPARATOR
    path.gsub!(File::SEPARATOR, File::ALT_SEPARATOR)
  end

のような感じにするのが、Fileクラスが期待するお作法なのでしょうか。
# Macはどうするんだろう。

そういえば File::ALT_SEPARATOR は undocumented なんですが、これは
あまり使うべきではないんでしょうか(PATH_SEPARATORなんてのもありま
したっけ)。

高橋征義 (TAKAHASHI Masayoshi)       Email:maki / inac.co.jp