Я использую rake для копирования файлов, которые я получаю из одной папки в две подпапки.Ruby не может удалить файл после cp на окнах
После копирования я пытаюсь удалить эти файлы из их исходной папки.
Я не могу удалить некоторые файлы (обычно только 1 или 2 из 5 или около того).
При использовании mv
(и не CLEAN
) Я принимаю сообщение об ошибке доступа.
Я считаю, что Windows (моя ОС) по-прежнему содержит ссылку на файл/с и поэтому не будет разрешить мне их удалить.
Я могу удалить файлы из кода без проблем. Не должно быть проблем с разрешениями.
Если моя теория верна, что все еще есть ссылка, открытая для файла, то как я могу закрыть эти ссылки?
Это может быть что-то еще?
Код:
DOCK = '/path'
NEW_FILES = DOCK + '/NewFiles'
dock_stock = FileList.new(DOCK + '/*.xml')
file target_path do |t|
unless dock_stock.empty?
mkdir t.name
dock_stock.each do |f|
target_new_files_folder = f.pathmap(NEW_FILES + '/%f')
mv f, target_new_files_folder
end
end
end
Также следует отметить эту задачу зависимость к многозадачности (на самом деле зависимости от зависимости от иждивенцев). task :clean => target_path
является одним из них.
Так что, может быть, проблема связана с несколькими потоками или заданием :clean
.
нужен ли весь этот код, чтобы воспроизвести проблему или вы можете обеспечить более короткий пример? – Stefan
Я мог бы стереть работу вокруг, я думал, что это будет полезно для других. Я вижу вашу точку зрения. –