Discard ActiveStorage::PurgeJobs for missing blobs

This commit is contained in:
George Claghorn 2018-07-11 22:09:23 -04:00
parent a1735a0dde
commit 16f435f931
2 changed files with 29 additions and 0 deletions

View File

@ -2,6 +2,8 @@
# Provides asynchronous purging of ActiveStorage::Blob records via ActiveStorage::Blob#purge_later.
class ActiveStorage::PurgeJob < ActiveStorage::BaseJob
discard_on ActiveRecord::RecordNotFound
def perform(blob)
blob.purge
end

View File

@ -0,0 +1,27 @@
# frozen_string_literal: true
require "test_helper"
require "database/setup"
class ActiveStorage::PurgeJobTest < ActiveJob::TestCase
setup { @blob = create_blob }
test "purges" do
assert_difference -> { ActiveStorage::Blob.count }, -1 do
ActiveStorage::PurgeJob.perform_now @blob
end
assert_not ActiveStorage::Blob.exists?(@blob.id)
assert_not ActiveStorage::Blob.service.exist?(@blob.key)
end
test "ignores missing blob" do
@blob.purge
perform_enqueued_jobs do
assert_nothing_raised do
ActiveStorage::PurgeJob.perform_later @blob
end
end
end
end