diff options
author | George Claghorn <george@basecamp.com> | 2019-05-22 15:07:35 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-22 15:07:35 -0400 |
commit | d5a2f7ec148726d7547e367d7a968e3b4be9b509 (patch) | |
tree | 1818959b09d3bdde9b43440fe5ca8fa402984ec3 /activestorage/app/models | |
parent | ff34f78248e367fdc7d59b42b37610427f7339c8 (diff) | |
download | rails-d5a2f7ec148726d7547e367d7a968e3b4be9b509.tar.gz rails-d5a2f7ec148726d7547e367d7a968e3b4be9b509.tar.bz2 rails-d5a2f7ec148726d7547e367d7a968e3b4be9b509.zip |
Mirror direct uploads
Diffstat (limited to 'activestorage/app/models')
-rw-r--r-- | activestorage/app/models/active_storage/attachment.rb | 6 | ||||
-rw-r--r-- | activestorage/app/models/active_storage/blob.rb | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/activestorage/app/models/active_storage/attachment.rb b/activestorage/app/models/active_storage/attachment.rb index 874ba80ca8..1ee43b1cd5 100644 --- a/activestorage/app/models/active_storage/attachment.rb +++ b/activestorage/app/models/active_storage/attachment.rb @@ -13,7 +13,7 @@ class ActiveStorage::Attachment < ActiveRecord::Base delegate_missing_to :blob - after_create_commit :analyze_blob_later, :identify_blob + after_create_commit :mirror_blob_later, :analyze_blob_later, :identify_blob after_destroy_commit :purge_dependent_blob_later # Synchronously deletes the attachment and {purges the blob}[rdoc-ref:ActiveStorage::Blob#purge]. @@ -37,6 +37,10 @@ class ActiveStorage::Attachment < ActiveRecord::Base blob.analyze_later unless blob.analyzed? end + def mirror_blob_later + blob.mirror_later + end + def purge_dependent_blob_later blob&.purge_later if dependent == :purge_later end diff --git a/activestorage/app/models/active_storage/blob.rb b/activestorage/app/models/active_storage/blob.rb index c9fbafad1f..6a486dd899 100644 --- a/activestorage/app/models/active_storage/blob.rb +++ b/activestorage/app/models/active_storage/blob.rb @@ -207,6 +207,9 @@ class ActiveStorage::Blob < ActiveRecord::Base name: [ "ActiveStorage-#{id}-", filename.extension_with_delimiter ], tmpdir: tmpdir, &block end + def mirror_later #:nodoc: + ActiveStorage::MirrorJob.perform_later(key, checksum: checksum) if service.respond_to?(:mirror) + end # Deletes the files on the service associated with the blob. This should only be done if the blob is going to be # deleted as well or you will essentially have a dead reference. It's recommended to use #purge and #purge_later |