Spec-Zone.ru › Ruby on Rails 7.2

класс ActiveStorage::Preview

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

Предварительный просмотр Active Storage

Некоторые неизображения могут быть предварительно просмотрены: то есть они могут быть представлены как изображения. Предварительный просмотр видео-объекта выполняется путем извлечения его первого кадра, а предварительный просмотр PDF-объекта выполняется путем извлечения его первой страницы.

Предварительный просмотр извлекает изображение предварительного просмотра из объекта. Active Storage предоставляет предварительные просмотры для видео и PDF-файлов. ActiveStorage::Previewer::VideoPreviewer используется для видео, а ActiveStorage::Previewer::PopplerPDFPreviewer и ActiveStorage::Previewer::MuPDFPreviewer используются для PDF-файлов. Создайте пользовательские предварительные просмотры, унаследовав от ActiveStorage::Previewer и реализовав необходимые методы. Обратитесь к документации ActiveStorage::Previewer для получения более подробной информации о требованиях к предварительным просмотрам.

Для выбора предварительного просмотра объекта Active Storage вызывает accept? для каждого зарегистрированного предварительного просмотра в порядке. Он использует первый предварительный просмотр, для которого accept? возвращает true, когда ему передается объект. В приложении Rails добавьте или удалите предварительные просмотры, манипулируя Rails.application.config.active_storage.previewers в файле инициализации:

Rails.application.config.active_storage.previewers
# => [ ActiveStorage::Previewer::PopplerPDFPreviewer, ActiveStorage::Previewer::MuPDFPreviewer, ActiveStorage::Previewer::VideoPreviewer ]

# Add a custom previewer for Microsoft Office documents:
Rails.application.config.active_storage.previewers << DOCXPreviewer
# => [ ActiveStorage::Previewer::PopplerPDFPreviewer, ActiveStorage::Previewer::MuPDFPreviewer, ActiveStorage::Previewer::VideoPreviewer, DOCXPreviewer ]

Вне приложения Rails измените ActiveStorage.previewers вместо этого.

Встроенные предварительные просмотры полагаются на сторонние библиотеки системы. В частности, встроенный предварительный просмотр видео требует FFmpeg. Предоставляются два предварительных просмотра PDF: один требует Poppler, а другой требует muPDF (версия 1.8 или новее). Для предварительного просмотра PDF-файлов установите либо Poppler, либо muPDF.

Эти библиотеки не предоставляются Rails. Вы должны установить их самостоятельно, чтобы использовать встроенные предварительные просмотры. Перед установкой и использованием стороннего программного обеспечения убедитесь, что вы понимаете последствия лицензирования.

Атрибуты

blob[R]
variation[R]

Открытые методы класса

new(blob, variation_or_variation_key) Показать исходный код
# File activestorage/app/models/active_storage/preview.rb, line 42
def initialize(blob, variation_or_variation_key)
  @blob, @variation = blob, ActiveStorage::Variation.wrap(variation_or_variation_key)
end

Открытые методы экземпляра

download(&block) Показать исходный код
# File activestorage/app/models/active_storage/preview.rb, line 90
def download(&block)
  if processed?
    presentation.download(&block)
  else
    raise UnprocessedError
  end
end

Загружает файл, связанный с вариантом этого предварительного просмотра. Если блок не задан, весь файл считывается в память и возвращается. Это потребует много оперативной памяти для очень больших файлов. Если блок задан, загрузка выполняется потоковым методом и выводится частями. Вызывает ActiveStorage::Preview::UnprocessedError, если предварительный просмотр еще не обработан.

image() Показать исходный код
# File activestorage/app/models/active_storage/preview.rb, line 59
def image
  blob.preview_image
end

Возвращает прикрепленное изображение предварительного просмотра объекта.

key() Показать исходный код
# File activestorage/app/models/active_storage/preview.rb, line 77
def key
  if processed?
    presentation.key
  else
    raise UnprocessedError
  end
end

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

processed() Показать исходный код
# File activestorage/app/models/active_storage/preview.rb, line 52
def processed
  process unless processed?
  variant.processed if variant?
  self
end

Обрабатывает предварительный просмотр, если он еще не обработан. Возвращает получаемый ActiveStorage::Preview экземпляр для удобства:

blob.preview(resize_to_limit: [100, 100]).processed.url

Обработка предварительного просмотра генерирует изображение из его объекта и прикрепляет изображение предварительного просмотра к объекту. Поскольку изображение предварительного просмотра хранится вместе с объектом, оно генерируется только один раз.

url(**options) Показать исходный код
# File activestorage/app/models/active_storage/preview.rb, line 68
def url(**options)
  if processed?
    presentation.url(**options)
  else
    raise UnprocessedError
  end
end

Возвращает URL-адрес варианта предварительного просмотра на службе. Вызывает ActiveStorage::Preview::UnprocessedError, если предварительный просмотр еще не обработан.

Этот метод синхронно обрабатывает вариант изображения предварительного просмотра, поэтому не вызывайте его в представлениях. Вместо этого сгенерируйте стабильный URL-адрес, который перенаправит на URL-адрес, возвращаемый этим методом.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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