2010-06-22 2 views
1

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

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

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

+0

Хорошо, я Думаю, я просто прищурился. Я никогда не знал, что это разрешение на уровне каталогов, спасибо! –

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