From 64c1bc8a6ea864fa9bfde96d5e6f3f51691a4821 Mon Sep 17 00:00:00 2001 From: Nat Dean-Lewis <94526761+natdeanlewissoftwire@users.noreply.github.com> Date: Fri, 11 Sep 2026 12:22:23 +0100 Subject: [PATCH] CLDC-4513: update rubyzip and patch breaking changes (#3381) --- Gemfile.lock | 9 ++++++--- app/services/exports/xml_export_service.rb | 2 +- spec/services/storage/archive_service_spec.rb | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 09435bd49..e290f5744 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -433,9 +433,12 @@ GEM actionpack (>= 7.0) railties (>= 7.0) rexml (3.4.4) - roo (2.10.1) + roo (3.0.0) + base64 (~> 0.2) + csv (~> 3) + logger (~> 1) nokogiri (~> 1) - rubyzip (>= 1.3.0, < 3.0.0) + rubyzip (>= 3.0.0, < 4.0.0) rotp (6.3.0) rspec-core (3.13.0) rspec-support (~> 3.13.0) @@ -499,7 +502,7 @@ GEM faraday-multipart (>= 1) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) - rubyzip (2.3.2) + rubyzip (3.6.0) securerandom (0.4.1) selenium-webdriver (4.43.0) base64 (~> 0.2) diff --git a/app/services/exports/xml_export_service.rb b/app/services/exports/xml_export_service.rb index 703d94f7d..486b788af 100644 --- a/app/services/exports/xml_export_service.rb +++ b/app/services/exports/xml_export_service.rb @@ -48,7 +48,7 @@ module Exports @logger.info("Creating #{archive} - #{initial_count} resources") return {} if initial_count.zero? - zip_file = Zip::File.open_buffer(StringIO.new) + zip_file = Zip::File.open_buffer(StringIO.new, create: true) part_number = 1 last_processed_marker = nil diff --git a/spec/services/storage/archive_service_spec.rb b/spec/services/storage/archive_service_spec.rb index 52808262f..6c0e54001 100644 --- a/spec/services/storage/archive_service_spec.rb +++ b/spec/services/storage/archive_service_spec.rb @@ -13,7 +13,7 @@ RSpec.describe Storage::ArchiveService do file end let(:archive_content) do - zip_file = Zip::File.open_buffer(StringIO.new) + zip_file = Zip::File.open_buffer(StringIO.new, create: true) zip_file.mkdir(compressed_folder) zip_file.add(compressed_filepath, compressed_file) zip_file.write_buffer @@ -51,7 +51,7 @@ RSpec.describe Storage::ArchiveService do it "raises an error if the file exists but is too large" do archive = archive_service.instance_variable_get(:@archive) - allow(archive).to receive(:get_entry).and_return(Zip::Entry.new(nil, "", nil, nil, nil, nil, nil, 100_000_000, nil)) + allow(archive).to receive(:get_entry).and_return(Zip::Entry.new(nil, "", size: 100_000_000)) expect { archive_service.get_file_io(compressed_filepath) } .to raise_error(RuntimeError, "File too large to be extracted")