summaryrefslogtreecommitdiff
path: root/app/uploaders/gitlab_uploader.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/uploaders/gitlab_uploader.rb')
-rw-r--r--app/uploaders/gitlab_uploader.rb20
1 files changed, 18 insertions, 2 deletions
diff --git a/app/uploaders/gitlab_uploader.rb b/app/uploaders/gitlab_uploader.rb
index a9e5c028b03..dac99676ef0 100644
--- a/app/uploaders/gitlab_uploader.rb
+++ b/app/uploaders/gitlab_uploader.rb
@@ -1,5 +1,6 @@
class GitlabUploader < CarrierWave::Uploader::Base
class_attribute :options
+ class_attribute :_system
class << self
# DSL setter
@@ -7,6 +8,10 @@ class GitlabUploader < CarrierWave::Uploader::Base
self.options = options
end
+ def system(system)
+ self._system = !!system
+ end
+
def root
options.storage_path
end
@@ -16,10 +21,20 @@ class GitlabUploader < CarrierWave::Uploader::Base
options.fetch('base_dir', '')
end
+ def system_dir
+ return unless system?
+
+ "-/system"
+ end
+
def file_storage?
storage == CarrierWave::Storage::File
end
+ def system?
+ !!self._system
+ end
+
def absolute_path(upload_record)
File.join(root, upload_record.path)
end
@@ -27,7 +42,7 @@ class GitlabUploader < CarrierWave::Uploader::Base
storage_options Gitlab.config.uploads
- delegate :base_dir, :file_storage?, to: :class
+ delegate :base_dir, :system_dir, :file_storage?, to: :class
def initialize(model, mounted_as = nil, **uploader_context)
super(model, mounted_as)
@@ -52,7 +67,8 @@ class GitlabUploader < CarrierWave::Uploader::Base
end
def store_dir
- File.join(base_dir, dynamic_segment)
+ segments = [base_dir, system_dir, dynamic_segment].compact
+ File.join(*segments)
end
def cache_dir