Я попытался создать zip-архив без сохранения файла архивации на диск. Итак, сначала я пишу метод с сохранением на диск:
begin
file = Zip::File.open("#{file_name}.zip", Zip::File::CREATE)
save_file file_name
file.add(file_name, file_name)
rescue IOError => e
puts "Error: #{e}"
ensure
file.close unless file.nil?
File.delete file_name
end
Это работает нормально, но перед созданием сохраните файл архивации.
Во-вторых, я попытался написать этот код, сначала создайте zip-архив StringIO с нужными мне файлами, во-вторых, я не могу сохранить их на диск в режиме bin:
string_io = Zip::OutputStream.write_buffer do |zos|
zos.put_next_entry(file_name)
zos.write dictionary.join(', ')
end
# Something wrong below
File.open("#{file_name}.zip", 'wb') do |file|
file.write string_io
file.close
end
Что делать не так? и как правильно сделать?