diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-20 17:35:15 -0500 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-20 17:35:15 -0500 |
commit | af999681122bf583b6644974ba2033453935fd6d (patch) | |
tree | d8d18f67d6892035bad07fa759fc2bf2377ef6c9 | |
parent | 6c2cef21ce67f83bff45ce76c0370b03be11451f (diff) | |
download | rails-af999681122bf583b6644974ba2033453935fd6d.tar.gz rails-af999681122bf583b6644974ba2033453935fd6d.tar.bz2 rails-af999681122bf583b6644974ba2033453935fd6d.zip |
Make processing an explicit step
-rw-r--r-- | lib/active_storage/variant.rb | 12 | ||||
-rw-r--r-- | test/variation_test.rb | 4 |
2 files changed, 9 insertions, 7 deletions
diff --git a/lib/active_storage/variant.rb b/lib/active_storage/variant.rb index 3053f44211..a07735eb57 100644 --- a/lib/active_storage/variant.rb +++ b/lib/active_storage/variant.rb @@ -13,8 +13,8 @@ class ActiveStorage::Variant attr_reader :blob, :variation delegate :service, to: :blob - def self.find_or_create_by(blob_key:, variation_key:) - new ActiveStorage::Blob.find_by!(key: blob_key), variation: verifier.verify(variation_key) + def self.find_or_process_by!(blob_key:, encoded_variant_key:) + new(ActiveStorage::Blob.find_by!(key: blob_key), variation: verifier.verify(encoded_variant_key)).processed end def self.encode_key(variation) @@ -25,8 +25,12 @@ class ActiveStorage::Variant @blob, @variation = blob, variation end + def processed + process unless exist? + self + end + def url(expires_in: 5.minutes, disposition: :inline) - perform unless exist? service.url blob_variant_key, expires_in: expires_in, disposition: disposition, filename: blob.filename end @@ -39,7 +43,7 @@ class ActiveStorage::Variant service.exist?(blob_variant_key) end - def perform + def process upload_variant transform(download_blob) end diff --git a/test/variation_test.rb b/test/variation_test.rb index bc47244468..8e569f908c 100644 --- a/test/variation_test.rb +++ b/test/variation_test.rb @@ -7,8 +7,6 @@ class ActiveStorage::VariationTest < ActiveSupport::TestCase blob = ActiveStorage::Blob.create_after_upload! \ io: File.open(File.expand_path("../fixtures/files/racecar.jpg", __FILE__)), filename: "racecar.jpg", content_type: "image/jpeg" - variant = blob.variant(resize: "100x100") - - assert_match /racecar.jpg/, variant.url + assert_match /racecar.jpg/, blob.variant(resize: "100x100").processed.url end end |