diff --git a/Gemfile.lock b/Gemfile.lock index a4784cc6499..d8fa52a0e55 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -108,7 +108,7 @@ GEM capybara-screenshot (1.0.14) capybara (>= 1.0, < 3) launchy - carrierwave (1.2.1) + carrierwave (1.2.3) activemodel (>= 4.0.0) activesupport (>= 4.0.0) mime-types (>= 1.16) diff --git a/changelogs/unreleased/bump-carrierwave-to-1-2-3.yml b/changelogs/unreleased/bump-carrierwave-to-1-2-3.yml new file mode 100644 index 00000000000..373ac48553e --- /dev/null +++ b/changelogs/unreleased/bump-carrierwave-to-1-2-3.yml @@ -0,0 +1,5 @@ +--- +title: Bump carrierwave gem verion to 1.2.3 +merge_request: 20287 +author: +type: performance diff --git a/config/initializers/carrierwave_monkey_patch.rb b/config/initializers/carrierwave_monkey_patch.rb deleted file mode 100644 index 7543231cd4f..00000000000 --- a/config/initializers/carrierwave_monkey_patch.rb +++ /dev/null @@ -1,69 +0,0 @@ -# This fixes the problem https://gitlab.com/gitlab-org/gitlab-ce/issues/46182 that carrierwave eagerly loads upoloading files into memory -# There is an PR https://github.com/carrierwaveuploader/carrierwave/pull/2314 which has the identical change. -module CarrierWave - module Storage - class Fog < Abstract - class File - module MonkeyPatch - ## - # Read content of file from service - # - # === Returns - # - # [String] contents of file - def read - file_body = file.body - - return if file_body.nil? - return file_body unless file_body.is_a?(::File) - - # Fog::Storage::XXX::File#body could return the source file which was upoloaded to the remote server. - read_source_file(file_body) if ::File.exist?(file_body.path) - - # If the source file doesn't exist, the remote content is read - @file = nil # rubocop:disable Gitlab/ModuleWithInstanceVariables - file.body - end - - ## - # Write file to service - # - # === Returns - # - # [Boolean] true on success or raises error - def store(new_file) - if new_file.is_a?(self.class) # rubocop:disable Cop/LineBreakAroundConditionalBlock - new_file.copy_to(path) - else - fog_file = new_file.to_file - @content_type ||= new_file.content_type # rubocop:disable Gitlab/ModuleWithInstanceVariables - @file = directory.files.create({ # rubocop:disable Gitlab/ModuleWithInstanceVariables - :body => fog_file ? fog_file : new_file.read, # rubocop:disable Style/HashSyntax - :content_type => @content_type, # rubocop:disable Style/HashSyntax,Gitlab/ModuleWithInstanceVariables - :key => path, # rubocop:disable Style/HashSyntax - :public => @uploader.fog_public # rubocop:disable Style/HashSyntax,Gitlab/ModuleWithInstanceVariables - }.merge(@uploader.fog_attributes)) # rubocop:disable Gitlab/ModuleWithInstanceVariables - fog_file.close if fog_file && !fog_file.closed? - end - true - end - - private - - def read_source_file(file_body) - return unless ::File.exist?(file_body.path) - - begin - file_body = ::File.open(file_body.path) if file_body.closed? # Reopen if it's already closed - file_body.read - ensure - file_body.close - end - end - end - - prepend MonkeyPatch - end - end - end -end