Это:
File.chmod(777, filename)
не делает то, что вы думаете, что делает. Из тонкой инструкции :
Изменяет биты разрешений в именованных файлах на битовый массив, представленный mode_int
.
Акцент мой. Файловые режимы обычно указываются в восьмеричном виде, так как они хорошо разделяют биты на три группы разрешений Unix (владелец, группа, другое):
File.chmod(0777, filename)
То есть вы на самом деле не устанавливаете файл на полный доступ, вы устанавливаете биты разрешения на 01411, который выглядит следующим образом:
-r----x--t
вместо
-rwxrwxrwx
что вы ожидаете. Обратите внимание, что ваше (десятичное) растровое изображение разрешения 777 отменило разрешение на запись.
Кроме того, удаление файла требует доступа для записи в каталог, в котором находится файл (по крайней мере, в системах Unixish), поэтому проверьте разрешения для каталога.
И, наконец, вы можете проверить возвращаемое значение из File.chmod
:
[...] Возвращает количество обработанных файлов.
Тот факт, что вы звоните, не означает, что это удастся.