Ruby open-uri блокировка файлов - PullRequest
1 голос
/ 12 июня 2009

У меня была проблема, когда загрузка в локальный файл блокировала его, пока я не убил скрипт ruby. Надеюсь, я изменил форму вызова, и теперь он не блокирует файл.

Может кто-нибудь сказать мне, почему вторая форма ниже не блокирует файл, а первая блокирует?

Эта форма блокирует локальный файл:

open(ver_local_zip, "w+").write(open(remote_zip, :proxy=>ftp_proxy).read)

Эта форма не блокирует файл:

open(ver_local_zip, "w+") { |f| f.write(open(remote_zip, :proxy=>ftp_proxy).read) }

Спасибо.

1 Ответ

2 голосов
/ 12 июня 2009

Вызов метода open с блоком обычно закрывает файл сразу после завершения выполнения блока. Без блока open возвращает файл (дескриптор), который будет освобожден при следующей сборке мусора.

...