239fdc78b1
It gathers list of file paths to delete before destroying the parent object. Then after the parent_object is destroyed these paths are scheduled for deletion asynchronously. Carrierwave needed associated model for deleting upload file. To avoid this requirement, simple Fog/File layer is used directly for file deletion, this allows us to use just a simple list of paths.
19 lines
368 B
Ruby
19 lines
368 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Uploads
|
|
class Base
|
|
BATCH_SIZE = 100
|
|
|
|
attr_reader :logger
|
|
|
|
def initialize(logger: nil)
|
|
@logger ||= Rails.logger
|
|
end
|
|
|
|
def delete_keys_async(keys_to_delete)
|
|
keys_to_delete.each_slice(BATCH_SIZE) do |batch|
|
|
DeleteStoredFilesWorker.perform_async(self.class, batch)
|
|
end
|
|
end
|
|
end
|
|
end
|