class ActiveStorage::Variation
A
set of transformations that can be applied to a blob to create a variant. This class is exposed via the ActiveStorage::Blob#variant
method and should rarely be used directly.
In case you do need to use this directly, it's instantiated using a hash of transformations where the key is the command and the value is the arguments. Example:
ActiveStorage::Variation.new(resize: "100x100", monochrome: true, trim: true, rotate: "-90")
A
list of all possible transformations is available at www.imagemagick.org/script/mogrify.php.
Attributes
Public Class Methods
Returns a variation instance with the transformations that were encoded by encode
.
# File activestorage/app/models/active_storage/variation.rb, line 19 def decode(key) new ActiveStorage.verifier.verify(key, purpose: :variation) end
Returns a signed key for the transformations
, which can be used to refer to a specific variation in a URL or combined key (like ActiveStorage::Variant#key
).
# File activestorage/app/models/active_storage/variation.rb, line 25 def encode(transformations) ActiveStorage.verifier.generate(transformations, purpose: :variation) end
# File activestorage/app/models/active_storage/variation.rb, line 30 def initialize(transformations) @transformations = transformations end
Public Instance Methods
Returns a signed key for all the transformations
that this variation was instantiated with.
# File activestorage/app/models/active_storage/variation.rb, line 47 def key self.class.encode(transformations) end
Accepts an open MiniMagick image instance, like what's returned by MiniMagick::Image.read(io)
, and performs the transformations
against it. The transformed image instance is then returned.
# File activestorage/app/models/active_storage/variation.rb, line 36 def transform(image) transformations.each do |(method, argument)| if eligible_argument?(argument) image.public_send(method, argument) else image.public_send(method) end end end
Private Instance Methods
# File activestorage/app/models/active_storage/variation.rb, line 52 def eligible_argument?(argument) argument.present? && argument != true end