С:
File.open( "some_file.txt" ) do |file|
puts file.read
end
Метод open вызывает ваш блок с экземпляром File и очищает ссылку на файл, как только ваш блок возвращает, закрывая и сбрасывая файл по мере необходимости, чтобы ваше приложение не пропускало обработчики файлов, что здорово. поскольку мы обычно забываем закрывать файлы или не учитывать, что обработка файлов может привести к исключениям.
Когда вы делаете это так:
file = File.open("some_file.txt")
puts file.read
Метод open предоставляет вам экземпляр File , но теперь вы отвечаете за очистку и закрытие файла, когда он вам больше не нужен. Поэтому, если вы делаете это следующим образом, вам, возможно, следует установить файл в блок begin / rescue и добавить условие гарантированного закрытия файла, если что-то пойдет не так.
Если у вас нет особых потребностей, вам никогда не следует использовать эту вторую версию, первая версия проще и безопаснее, и вам не нужно заботиться о закрытии / очистке того, что вы сделали с файлом.