класс ActiveStorage::Variation
Набор преобразований, которые могут быть применены к блобу для создания варианта. Этот класс доступен через метод ActiveStorage::Blob#variant и редко используется напрямую.
В случае необходимости прямого использования, он инициализируется с помощью хеша преобразований, где ключ — команда, а значение — аргументы. Пример:
ActiveStorage::Variation.new(resize_to_limit: [100, 100], colourspace: "b-w", rotate: "-90", saver: { trim: true })
Параметры напрямую соответствуют командам из ImageProcessing.
Атрибуты
Публичные методы класса
# File activestorage/app/models/active_storage/variation.rb, line 33 def decode(key) new ActiveStorage.verifier.verify(key, purpose: :variation) end
Возвращает экземпляр Variation с преобразованиями, закодированными с помощью encode.
# File activestorage/app/models/active_storage/variation.rb, line 39 def encode(transformations) ActiveStorage.verifier.generate(transformations, purpose: :variation) end
Возвращает подписанный ключ для transformations, который может использоваться для ссылки на определённый вариант в URL или комбинированном ключе (например, ActiveStorage::Variant#key).
# File activestorage/app/models/active_storage/variation.rb, line 44 def initialize(transformations) @transformations = transformations.deep_symbolize_keys end
# File activestorage/app/models/active_storage/variation.rb, line 21
def wrap(variator)
case variator
when self
variator
when String
decode variator
else
new variator
end
end Возвращает экземпляр Variation на основе заданного вариатора. Если вариатор является объектом Variation, он возвращается без изменений. Если это строка String, она передаётся в ActiveStorage::Variation.decode. В противном случае предполагается, что это хеш преобразований Hash и передаётся непосредственно в конструктор.
Публичные методы экземпляра
# File activestorage/app/models/active_storage/variation.rb, line 68 def content_type MiniMime.lookup_by_extension(format.to_s).content_type end
# File activestorage/app/models/active_storage/variation.rb, line 48 def default_to(defaults) self.class.new transformations.reverse_merge(defaults) end
# File activestorage/app/models/active_storage/variation.rb, line 77 def digest OpenSSL::Digest::SHA1.base64digest Marshal.dump(transformations) end
# File activestorage/app/models/active_storage/variation.rb, line 60
def format
transformations.fetch(:format, :png).tap do |format|
if MiniMime.lookup_by_extension(format.to_s).nil?
raise ArgumentError, "Invalid variant format (#{format.inspect})"
end
end
end # File activestorage/app/models/active_storage/variation.rb, line 73 def key self.class.encode(transformations) end
Возвращает подписанный ключ для всех transformations, с которыми был инициализирован этот вариант.
# File activestorage/app/models/active_storage/variation.rb, line 54
def transform(file, &block)
ActiveSupport::Notifications.instrument("transform.active_storage") do
transformer.transform(file, format: format, &block)
end
end Принимает объект File, выполняет transformations над ним и сохраняет преобразованное изображение во временный файл.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.