diff options
Diffstat (limited to 'app/uploaders/gitlab_uploader.rb')
-rw-r--r-- | app/uploaders/gitlab_uploader.rb | 20 |
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 |