31 lines
879 B
Ruby
31 lines
879 B
Ruby
class LfsObjectUploader < GitlabUploader
|
|
storage :file
|
|
|
|
def store_dir
|
|
"#{Gitlab.config.lfs.storage_path}/#{model.oid[0, 2]}/#{model.oid[2, 2]}"
|
|
end
|
|
|
|
def cache_dir
|
|
"#{Gitlab.config.lfs.storage_path}/tmp/cache"
|
|
end
|
|
|
|
def filename
|
|
model.oid[4..-1]
|
|
end
|
|
|
|
def work_dir
|
|
File.join(Gitlab.config.lfs.storage_path, 'tmp', 'work')
|
|
end
|
|
|
|
private
|
|
|
|
# To prevent LFS files from moving across filesystems, override the default
|
|
# implementation:
|
|
# http://github.com/carrierwaveuploader/carrierwave/blob/v1.0.0/lib/carrierwave/uploader/cache.rb#L181-L183
|
|
def workfile_path(for_file = original_filename)
|
|
# To be safe, keep this directory outside of the the cache directory
|
|
# because calling CarrierWave.clean_cache_files! will remove any files in
|
|
# the cache directory.
|
|
File.join(work_dir, @cache_id, version_name.to_s, for_file)
|
|
end
|
|
end
|