class Slices::Asset::Maker
Attributes
args[RW]
new_asset[RW]
Public Class Methods
new(args)
click to toggle source
# File lib/slices/asset/maker.rb, line 11 def initialize(args) self.args = args end
run(args)
click to toggle source
# File lib/slices/asset/maker.rb, line 7 def self.run(args) new(args).run end
Public Instance Methods
create_new_asset()
click to toggle source
# File lib/slices/asset/maker.rb, line 15 def create_new_asset ::Asset.create!(args) end
delete_tempfile_from_s3()
click to toggle source
# File lib/slices/asset/maker.rb, line 35 def delete_tempfile_from_s3 directory = new_asset.file.send(:directory) directory.files.new(key: s3_path).destroy end
find_matching_asset(new_asset)
click to toggle source
# File lib/slices/asset/maker.rb, line 19 def find_matching_asset(new_asset) ::Asset.where({ file_fingerprint: new_asset.file_fingerprint, :_id.ne => new_asset.id }).first end
run()
click to toggle source
# File lib/slices/asset/maker.rb, line 40 def run self.new_asset = create_new_asset delete_tempfile_from_s3 if tempfile_stored_on_s3? matching_asset = find_matching_asset(new_asset) if matching_asset.present? new_asset.destroy matching_asset else new_asset end end
s3_path()
click to toggle source
# File lib/slices/asset/maker.rb, line 30 def s3_path s3_path = args[:file].path s3_path[s3_path.index(Slices::Config::S3_TEMPFILE_KEY_PREFIX) .. -1] end
tempfile_stored_on_s3?()
click to toggle source
# File lib/slices/asset/maker.rb, line 25 def tempfile_stored_on_s3? Slices::Config.s3_storage? && args[:file].is_a?(URI) end