2009-03-04 5 views
21

Я хотел бы удалить каталог, который может содержать или не содержать файлы или другие каталоги. Глядя в документы Ruby, я нашел Dir.rmdir, но он не удалит непустой каталог. Есть ли метод удобства, позволяющий мне это делать? Или мне нужно написать рекурсивный метод для изучения всего под каталогом?Какой безопасный и простой способ удалить каталог в Ruby?

ответ

47
require 'fileutils' 

FileUtils.rm_rf(dir) 
+3

Имейте в виду, что в документах есть предупреждение об этом: вы можете подвергнуть уязвимость, если вы ее не пройдете: secure as a опция rm_rf. – BKewl

+0

@BKewl Ссылка на это? – 0112

+2

@ alex0112: См. Http://ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html#method-c-rm_rf и http://ruby-doc.org/stdlib-1.9. .3/libdoc/fileutils/rdoc/FileUtils.html # method-c-rm_r – BKewl

-1

ленивые путь:

def delete_all(path) 
    `rm -rf "#{path}"` 
end 
3

Чистый Рубин путь:

требуют 'FileUtils'

FileUtils.rm_rf ("/ каталог/в/идти")

Если вам нужна безопасность резьбы: (предупреждение, меняется рабочий каталог)

FileUtils.rm_rf ("directory/to/go",: secure => true)

Смежные вопросы