Spec-Zone.ru › Ruby on Rails 7.1

class ActiveStorage::Variation

Parent:
Объект

Изменение размера Active Storage

Набор преобразований, которые можно применить к блобу для создания варианта. Этот класс доступен через метод ActiveStorage::Blob#variant и редко используется напрямую.

В случае необходимости прямого использования, он инициализируется с помощью хэша преобразований, где ключ — команда, а значение — аргументы. Пример:

ActiveStorage::Variation.new(resize_to_limit: [100, 100], colourspace: "b-w", rotate: "-90", saver: { trim: true })

Параметры напрямую отображаются на команды из ImageProcessing.

Атрибуты

transformations[R]

Общедоступные методы класса

decode(key) Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 35
def decode(key)
  new ActiveStorage.verifier.verify(key, purpose: :variation)
end

Возвращает экземпляр Variation с преобразованиями, которые были закодированы encode.

encode(transformations) Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 41
def encode(transformations)
  ActiveStorage.verifier.generate(transformations, purpose: :variation)
end

Возвращает подписанный ключ для transformations, который может использоваться для ссылки на конкретный вариант в URL или комбинированном ключе (например, ActiveStorage::Variant#key).

new(transformations) Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 46
def initialize(transformations)
  @transformations = transformations.deep_symbolize_keys
end
wrap(variator) Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 23
def wrap(variator)
  case variator
  when self
    variator
  when String
    decode variator
  else
    new variator
  end
end

Возвращает экземпляр Variation на основе заданного «вариатора». Если «вариатор» является экземпляром Variation, он возвращается без изменений. Если это String, он передаётся в ActiveStorage::Variation.decode. В противном случае, предполагается, что это хэш преобразований Hash и передаётся непосредственно в конструктор.

Общедоступные методы экземпляров

content_type() Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 70
def content_type
  Marcel::MimeType.for(extension: format.to_s)
end
default_to(defaults) Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 50
def default_to(defaults)
  self.class.new transformations.reverse_merge(defaults)
end
digest() Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 79
def digest
  OpenSSL::Digest::SHA1.base64digest Marshal.dump(transformations)
end
format() Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 62
def format
  transformations.fetch(:format, :png).tap do |format|
    if Marcel::Magic.by_extension(format.to_s).nil?
      raise ArgumentError, "Invalid variant format (#{format.inspect})"
    end
  end
end
key() Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 75
def key
  self.class.encode(transformations)
end

Возвращает подписанный ключ для всех transformations, с которыми был создан этот вариант.

transform(file, &block) Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 56
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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API