Spec-Zone.ru › Ruby on Rails 8.0

класс ActiveStorage::Preview

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

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

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

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

Для выбора предварительного просмотрщика для объекта blob Active Storage вызывает accept? для каждого зарегистрированного предварительного просмотрщика в порядке. Он использует первый предварительный просмотрщик, для которого accept? возвращает true, когда ему передаётся объект blob. В приложении 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

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

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

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

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

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

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