From: "mame (Yusuke Endoh)" Date: 2012-11-03T11:13:46+09:00 Subject: [ruby-dev:46382] [ruby-trunk - Bug #6756][Assigned] FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない Issue #6756 has been updated by mame (Yusuke Endoh). Status changed from Open to Assigned Assignee set to mame (Yusuke Endoh) 以下のパッチで直りますが、影響無いですかね。make check は通りました。 反対がなさそうならコミットします。が、問題が起きたら revert となります。 diff --git a/lib/fileutils.rb b/lib/fileutils.rb index 67cc79f..b18ca30 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -1534,6 +1534,7 @@ private end end end + ensure yield self end -- Yusuke Endoh ---------------------------------------- Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない https://bugs.ruby-lang.org/issues/6756#change-32269 Author: fumiyas (Fumiyasu SATOH) Status: Assigned Priority: Normal Assignee: mame (Yusuke Endoh) Category: lib Target version: ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] =begin UNIX の rm コマンドは、(({rm -rf dir})) でアクセス権がない空ディレクトリを 削除しますが、(({FileUtils.rm_rf("dir")})) は削除してくれません。 $ mkdir -m 0 empty-noperm-dir $ sudo ls -la empty-noperm-dir 合計 8 d--------- 2 fumiyas fumiyas 4096 7月 20 01:10 . drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 .. $ ruby -v -rfileutils -e 'FileUtils.rm_rf("empty-noperm-dir")' ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] $ sudo ls -la empty-noperm-dir 合計 8 d--------- 2 fumiyas fumiyas 4096 7月 20 01:10 . drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 .. $ rm -rf empty-noperm-dir $ sudo ls -la empty-noperm-dir ls: empty-noperm-dir にアクセスできません: そのようなファイルやディレクトリはありません この例では指定したディレクトリがアクセス権がない空ディレクトリですが、 サブディレクトリの場合も同じ問題が発生します。 Windows ならしょうがない(私の知る限りアクセス権のないファイルは 削除不可なので)と思うのですが、少なくとも UNIX 系の OS では rm -rf と 同じく削除して欲しいです。 =end -- http://bugs.ruby-lang.org/