- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我支持适用于 OS X 和 Linux 的跨平台 ruby 2 脚本,但在尝试删除包含目录符号链接(symbolic link)的树时在 Windows 上失败。这是我在最简单的例子中看到的,从 irb 运行。目录“parent”包含一个名为“symlink”的符号链接(symbolic link),它指向一个目标目录。目标存在。
irb(main):001:0> require 'fileutils'
=> true
irb(main):003:0> FileUtils.rm_r 'parent'
Errno::ENOENT: No such file or directory - parent/symlink
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:1349:in `open'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:1349:in `entries'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:1349:in `entries'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:1536:in `postorder_traverse'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:1537:in `block in postorder_traverse'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:1536:in `each'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:1536:in `postorder_traverse'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:837:in `remove_entry'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:695:in `block in rm_r'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:691:in `each'
from c:/engapps/Ruby/lib/ruby/2.0.0/fileutils.rb:691:in `rm_r'
除了 system('rmdir/s/q parent')
这样的解决方案之外,这里还有其他选择吗?我知道 FileUtils.symlink() 在 Windows 上不受支持,但 FileUtils.rm_r() 的核心故障完全是另一回事。自从 Win 7 出现以来,这一直是一个问题,甚至可能回到 Vista,我还没有找到一个不涉及到 CMD.EXE 的好的解决方案。
注意:FileUtils.rm_rf() 不会改进。
最佳答案
我已经阅读了 ruby 2.0 中 fileutils.rb 的源代码,以及它所依赖的代码。从这个来源中可以清楚地看出,没有考虑 Windows 符号链接(symbolic link),尽管在这个模块中,Win32 的代码与非 Windows 的行为不同。似乎没有任何关于 Windows 符号链接(symbolic link)的 Ruby 公开票证,所以答案是,Ruby 不处理它,而且看起来不会很快处理。所以 system('rmdir/s/q parent')
解决方法是删除包含符号链接(symbolic link)的 Windows 目录树的方法。
关于当存在指向目录 : alternatives? 的符号链接(symbolic link)时,Ruby FileUtils.rm_r 在 Windows 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27995503/
我支持适用于 OS X 和 Linux 的跨平台 ruby 2 脚本,但在尝试删除包含目录符号链接(symbolic link)的树时在 Windows 上失败。这是我在最简单的例子中看到的,从
我是一名优秀的程序员,十分优秀!