File.expand_pathがシフトJISのパスを返せない

応急処置ですが、RubyのFile.expand_pathを再定義して、中でWin32API "GetFullPathName" を呼んでみました。

module K32
  extend DL::Importable
  dlload "kernel32.dll"
  extern 'long GetFullPathName(char *,long, char *, char **)'
end

class File
  def self.expand_path(path, dir=nil)
    path = [dir, path].join('\\') if dir
    size=1000
    expand="\0"*size
    size=K32.getFullPathName(path, size, expand, "")
    expand[0...size].gsub(/\\/, '/')
  end
end

dl/import.rbが早速役に立ったよ!!
将来このバグが修正されたら、この部分はさっくり削除しましょう。