提交 d8fa256f 编写于 作者: S Shinya Maeda
上级 014f5f6a
# This is a monkey patch until https://github.com/carrierwaveuploader/carrierwave/pull/2314 has been merged
# This fixes a problem https://gitlab.com/gitlab-org/gitlab-ce/issues/46182 that carrierwave loads large files into memory
# and triggers sidekiq shutdown by hitting RSS limit.
module CarrierWave
module Storage
class Fog < Abstract
class File
def read
file_body = file.body
return if file_body.nil?
return file_body unless file_body.is_a?(::File)
begin
file_body = ::File.open(file_body.path) if file_body.closed? # Reopen if it's closed
file_body.read
ensure
file_body.close
end
end
def store(new_file)
if new_file.is_a?(self.class)
new_file.copy_to(path)
else
fog_file = new_file.to_file
@content_type ||= new_file.content_type
@file = directory.files.create({
:body => fog_file ? fog_file : new_file.read,
:content_type => @content_type,
:key => path,
:public => @uploader.fog_public
}.merge(@uploader.fog_attributes))
fog_file.close if fog_file && !fog_file.closed?
end
true
end
end
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册