Удаленные файлы не удаляются с жесткого диска в Ruby - PullRequest
1 голос
/ 22 июня 2010

У меня странная ситуация с удалением файлов в Ruby, код, кажется, сообщает правильно, но физический файл не удаляется с моего жесткого диска. Я могу сделать rm path/to/file в командной строке - это работает. Я даже могу открыть консоль Rails и File.safe_unlink файл, и это также работает, просто в моем приложении Rails не удается удалить фактический файл:

def destroy
  Rails.logger.debug local_path #=> /Users/ryan/.../public/system/.../file.jpg
  Rails.logger.debug File.exist?(local_path) #=> true
  File.safe_unlink(local_path)
  Rails.logger.debug File.exist?(local_path) #=> false
  # yet the physical file actually STILL exists!
end

Физический файл находится в Git-репо (репо хранится в / public / system /). Есть какие-нибудь ошибки с этим? Я попытался использовать гем ruby-git для удаления файла с помощью команды rm, которую он предоставляет, но это также не удаляет файл.

Я открыл все права доступа к файлам во время тестирования, но все еще ничего не работает. Я также подтвердил это с помощью File.writable? (Local_path), который вернул true.

Есть мысли, почему это может помешать удалению файла?

1 Ответ

1 голос
/ 23 июня 2010

Вы проверили разрешения для каталога ? Удаление - это операция записи в каталог, а не операция записи в файл. (rm также проверит свойства файла и спросит, действительно ли вы хотите это сделать, в качестве любезности, если файл защищен от записи; но если каталог недоступен для записи, он отказывается.)

...