From 2ba2ef1b9c0b3e00c9096710e1c67dabc730b3e2 Mon Sep 17 00:00:00 2001
From: Sandip Trivedi <trivedi.sandip@gmail.com>
Date: Wed, 27 May 2015 18:09:22 -0400
Subject: [PATCH] Replaces the zipzip gem with the rubyzip gem

---
 Gemfile                        | 6 +++---
 Gemfile.lock                   | 4 +---
 app/models/user.rb             | 2 +-
 config/initializers/rubyzip.rb | 7 +++++++
 spec/models/user_spec.rb       | 4 ++--
 5 files changed, 14 insertions(+), 9 deletions(-)
 create mode 100644 config/initializers/rubyzip.rb

diff --git a/Gemfile b/Gemfile
index 7ee8c409ca..5820c08879 100644
--- a/Gemfile
+++ b/Gemfile
@@ -173,9 +173,9 @@ gem "rails-timeago",           "2.11.0"
 
 gem "logging-rails", "0.5.0", require: "logging/rails"
 
-# Workarounds
-# https://github.com/rubyzip/rubyzip#important-note
-gem "zip-zip"
+# # Workarounds
+# # https://github.com/rubyzip/rubyzip#important-note
+gem "rubyzip"
 
 # Prevent occasions where minitest is not bundled in
 # packaged versions of ruby. See following issues/prs:
diff --git a/Gemfile.lock b/Gemfile.lock
index 47b1b501aa..e9d965d52c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -718,8 +718,6 @@ GEM
     will_paginate (3.0.7)
     xpath (2.0.0)
       nokogiri (~> 1.3)
-    zip-zip (0.3)
-      rubyzip (>= 1.0.0)
 
 PLATFORMS
   ruby
@@ -830,6 +828,7 @@ DEPENDENCIES
   rspec-rails (= 3.2.1)
   rubocop (= 0.31.0)
   ruby-oembed (= 0.8.14)
+  rubyzip
   sass-rails (= 5.0.1)
   selenium-webdriver (= 2.45.0)
   shoulda-matchers (= 2.8.0)
@@ -851,4 +850,3 @@ DEPENDENCIES
   uuid (= 2.3.7)
   webmock (= 1.21.0)
   will_paginate (= 3.0.7)
-  zip-zip
diff --git a/app/models/user.rb b/app/models/user.rb
index a2a5faabbd..364a33350d 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -325,7 +325,7 @@ class User < ActiveRecord::Base
   def perform_export_photos!
     temp_zip = Tempfile.new([username, '_photos.zip'])
     begin
-      Zip::ZipOutputStream.open(temp_zip.path) do |zos|
+      Zip::OutputStream.open(temp_zip.path) do |zos|
         photos.each do |photo|
           begin
             photo_file = photo.unprocessed_image.file
diff --git a/config/initializers/rubyzip.rb b/config/initializers/rubyzip.rb
new file mode 100644
index 0000000000..00b352494e
--- /dev/null
+++ b/config/initializers/rubyzip.rb
@@ -0,0 +1,7 @@
+# https://github.com/rubyzip/rubyzip#configuration
+# Zip.setup do |c|
+#   c.on_exists_proc = true
+#   c.continue_on_exists_proc = true
+#   c.unicode_names = true
+#   c.default_compression = Zlib::BEST_COMPRESSION
+# end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 3a95098c31..517cacd856 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -1065,14 +1065,14 @@ describe User, :type => :model do
       expect(@user.exported_photos_at).to be_present
       expect(@user.exporting_photos).to be_falsey
       expect(@user.exported_photos_file.filename).to match /.zip/
-      expect(Zip::ZipFile.open(@user.exported_photos_file.path).entries.count).to eq(1)
+      expect(Zip::File.open(@user.exported_photos_file.path).entries.count).to eq(1)
     end
 
     it "does not add empty entries when photo not found" do
       File.unlink @user.photos.first.unprocessed_image.path
       @user.perform_export_photos!
       expect(@user.exported_photos_file.filename).to match /.zip/
-      expect(Zip::ZipFile.open(@user.exported_photos_file.path).entries.count).to eq(0)
+      expect(Zip::File.open(@user.exported_photos_file.path).entries.count).to eq(0)
     end
   end
 
-- 
GitLab