ruby 1.8.6 on windows File.join总生成“/”作为File Separator:
File.expand_path(File.join(File.dirname(__FILE__),"..","lib"))
#=> "C:/Documents and Settings/lib"
而File::SEPARATOR也默认是"/"
File::SEPARATOR
=> "/"
尽管Windows API支持"/"和"\"两种形式。但是在cmd里面,windows却不能识别"/"。让人有点不爽...
似乎这个问题可以这样解决:
File::REAL_SEPARATOR = File::ALT_SEPARATOR || File::SEPARATOR
File.join('dir','file').gsub(File::SEPARATOR,File::REAL_SEPARATOR)
#on win => dir\name
#on *nix => dir/name
但是,为什么ruby不能自动根据平台自己决定separator呢?或是说为什么windows下默认separator不是"\"呢?
还有更糟糕的换行...
匹配或替换不同系统产生的换行问题很好解决,用正则\s很容易搞定。
不管怎么说File Separator已经在ruby里是一个常量存在。但是newline却只能硬编码成"\n"或"\r\n"
为什么没有一个这样的常量:String::NEWLINE
在windows 返回 "\r\n",*nix返回 "\n"
不知道上面上面说的两个问题ruby里有没有一个优雅的解决方式呢?