OS X 및 Linux에서 작동하는 크로스 플랫폼 루비 2 스크립트를 지원하지만 디렉토리 심볼릭 링크가 포함 된 트리를 제거하려고 시도하면 Windows에서 실패합니다. 다음은 irb에서 실행되는 가장 간단한 예제입니다. "parent"디렉토리에는 대상 디렉토리를 가리키는 "symlink"라는 심볼릭 링크가 있습니다. 대상이 존재합니다.디렉토리에 심볼릭 링크가있을 때 Ruby FileUtils.rm_r이 Windows에서 실패합니다 : 대안?
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')
과 같은 솔루션 외부에는 다른 옵션이 있습니까? Windows에서는 FileUtils.symlink()가 지원되지 않지만 FileUtils.rm_r()의 하드 코어 실패는 완전히 다른 것입니다. Win 7이 나왔을 때부터 Vista로 되돌아 왔고 CMD.EXE에 포격하지 않는 좋은 해결책을 찾지 못했기 때문에 이것은 문제가되었습니다.
참고 : FileUtils.rm_rf()는 작업을 향상시키지 않습니다.