Создание временного файла

Ruby:
Создание временного файла

Как это сделать:

Стандартная библиотека Ruby предоставляет Tempfile для создания временных файлов. Давайте разберемся:

require 'tempfile'

Tempfile.create('my_temp') do |tempfile|
  tempfile.write('Временное содержимое')
  puts "Временный файл находится по адресу: #{tempfile.path}"
end
# После выполнения блока файл автоматически удаляется.

Как только вы это запустите, увидите:

Временный файл находится по адресу: /tmp/my_temp20180418-56789-1234567

Этот файл не будет существовать дольше, чем нужно. Как только блок выполнится, Ruby очистит за вами.

Глубже

Класс Tempfile существует начиная с Ruby 1.8, совершенствуется и оттачивается со временем. Под капотом он использует путь к временным файлам вашей системы, предоставляемый операционной системой.

Альтернативы? Конечно, вы могли бы вручную создавать и отслеживать временные файлы, но зачем изобретать велосипед? Tempfile предоставляет вам случайное, уникальное имя файла, снижая риск коллизий.

Для тех, кто стремится к большему контролю, метод Tempfile.new принимает параметры для настройки имени файла и его расположения. Но помните, с великой силой приходит великая ответственность - вам придется удалять эти файлы вручную.

Настоящее преимущество использования Tempfile заключается в его потокобезопасности и сборке мусора. Он блокирует файл и гарантирует, что конфиденциальные данные не останутся дольше, чем нужно. Временный файл ведет себя почти так же, как обычный объект File, так что вы можете читать из него, писать в него и в противном случае манипулировать им, используя типичные операции с файлами.

См. также

  • Документация Ruby API для более глубокого изучения использования Tempfile: API Dock Tempfile
  • Руководство по работе с файлами в Ruby для более подробной информации о работе с файлами: Работа с файлами