Module: ActiveStorage::AsyncVariants

Defined in:
lib/active_storage/async_variants.rb,
lib/active_storage/async_variants/helper.rb,
lib/active_storage/async_variants/version.rb,
lib/active_storage/async_variants/registry.rb,
lib/active_storage/async_variants/process_job.rb,
lib/active_storage/async_variants/transformer.rb,
lib/active_storage/async_variants/blob_extension.rb,
lib/active_storage/async_variants/preview_extension.rb,
lib/active_storage/async_variants/variation_extension.rb,
lib/active_storage/async_variants/attachment_extension.rb,
lib/active_storage/async_variants/reflection_extension.rb,
lib/active_storage/async_variants/variant_record_extension.rb,
lib/active_storage/async_variants/asset_tag_helper_extension.rb,
app/controllers/active_storage/async_variants/states_controller.rb,
lib/active_storage/async_variants/variant_with_record_extension.rb,
app/controllers/active_storage/async_variants/callbacks_controller.rb

Defined Under Namespace

Modules: AssetTagHelperExtension, AttachmentExtension, BlobExtension, Helper, PreviewExtension, ReflectionExtension, VariantRecordExtension, VariantWithRecordExtension, VariationExtension Classes: CallbacksController, Engine, ProcessJob, Registry, StatesController, Transformer

Constant Summary collapse

PASS_THROUGH_HTML_OPTIONS =

HTML attributes round-tripped through the state-endpoint URL so the eventual processed-state render can apply them to the inner <img>/<video>.

%i[alt width height controls autoplay preload].freeze
VERSION =
"0.4.0"

Class Method Summary collapse

Class Method Details

.callback_token_for(variant_record) ⇒ Object



82
83
84
# File 'lib/active_storage/async_variants.rb', line 82

def self.callback_token_for(variant_record)
  ActiveStorage.verifier.generate(variant_record.id, purpose: :async_variant_callback)
end

.callback_url_for(variant_record) ⇒ Object



86
87
88
89
90
91
92
93
# File 'lib/active_storage/async_variants.rb', line 86

def self.callback_url_for(variant_record)
  url_options = ActiveStorage::Current.url_options || Rails.application.default_url_options
  token = callback_token_for(variant_record)
  Rails.application.routes.url_helpers.active_storage_async_variant_callback_url(
    token: token,
    **url_options,
  )
end

.prepend_model_extensions!Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/active_storage/async_variants.rb', line 57

def self.prepend_model_extensions!
  require "active_storage/reflection"
  ActiveStorage::Reflection::HasAttachedReflection.prepend(
    ActiveStorage::AsyncVariants::ReflectionExtension
  )
  ActiveStorage::Blob.prepend(
    ActiveStorage::AsyncVariants::BlobExtension
  )
  ActiveStorage::Variation.prepend(
    ActiveStorage::AsyncVariants::VariationExtension
  )
  ActiveStorage::VariantWithRecord.prepend(
    ActiveStorage::AsyncVariants::VariantWithRecordExtension
  )
  ActiveStorage::VariantRecord.include(
    ActiveStorage::AsyncVariants::VariantRecordExtension
  )
  ActiveStorage::Attachment.prepend(
    ActiveStorage::AsyncVariants::AttachmentExtension
  )
  ActiveStorage::Preview.prepend(
    ActiveStorage::AsyncVariants::PreviewExtension
  )
end