From bc00803af03147452c12e9e2c7e8f0c0cba86f73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= Date: Mon, 9 Jul 2018 13:34:18 +0200 Subject: Access metadata directly from Object Storage Previously we would pull the file, now, we just stream-it as needed from Object Storage --- app/uploaders/gitlab_uploader.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'app/uploaders/gitlab_uploader.rb') diff --git a/app/uploaders/gitlab_uploader.rb b/app/uploaders/gitlab_uploader.rb index 7919f126075..7636acf255c 100644 --- a/app/uploaders/gitlab_uploader.rb +++ b/app/uploaders/gitlab_uploader.rb @@ -71,6 +71,23 @@ class GitlabUploader < CarrierWave::Uploader::Base File.join('/', self.class.base_dir, dynamic_segment, filename) end + def open + stream = if file_storage? + File.open(path, "rb") if path + else + ::Gitlab::HttpIO.new(url, cached_size) if url + end + + return unless stream + return stream unless block_given? + + begin + yield(stream) + ensure + stream.close + end + end + private # Designed to be overridden by child uploaders that have a dynamic path -- cgit v1.2.3