Spec-Zone.ru › Ruby on Rails 7.0

класс ActiveStorage::Variation

Родитель:
Объект

Набор преобразований, которые могут быть применены к блобу для создания варианта. Этот класс доступен через метод 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 33
def decode(key)
  new ActiveStorage.verifier.verify(key, purpose: :variation)
end

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

encode(transformations) Показать исходный код
# 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).

new(transformations) Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 44
def initialize(transformations)
  @transformations = transformations.deep_symbolize_keys
end
wrap(variator) Показать исходный код
# 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 и передаётся непосредственно в конструктор.

Публичные методы экземпляра

content_type() Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 68
def content_type
  MiniMime.lookup_by_extension(format.to_s).content_type
end
default_to(defaults) Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 48
def default_to(defaults)
  self.class.new transformations.reverse_merge(defaults)
end
digest() Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 77
def digest
  OpenSSL::Digest::SHA1.base64digest Marshal.dump(transformations)
end
format() Показать исходный код
# 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
key() Показать исходный код
# File activestorage/app/models/active_storage/variation.rb, line 73
def key
  self.class.encode(transformations)
end

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

transform(file, &block) Показать исходный код
# 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.

Spec-Zone.ru

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