2019-05-22 19:07:35 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2019-08-01 09:43:25 +00:00
|
|
|
require "active_support/core_ext/object/try"
|
|
|
|
|
2019-05-22 19:07:35 +00:00
|
|
|
# Provides asynchronous mirroring of directly-uploaded blobs.
|
|
|
|
class ActiveStorage::MirrorJob < ActiveStorage::BaseJob
|
|
|
|
queue_as { ActiveStorage.queues[:mirror] }
|
|
|
|
|
|
|
|
discard_on ActiveStorage::FileNotFoundError
|
|
|
|
retry_on ActiveStorage::IntegrityError, attempts: 10, wait: :exponentially_longer
|
|
|
|
|
|
|
|
def perform(key, checksum:)
|
|
|
|
ActiveStorage::Blob.service.try(:mirror, key, checksum: checksum)
|
|
|
|
end
|
|
|
|
end
|