Spec-Zone.ru › Ruby on Rails 6.0

класс ActiveStorage::Preview

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

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

Превью-генератор извлекает предварительный просмотр изображения из объекта blob. Active Storage предоставляет превью-генераторы для видео и PDF: ActiveStorage::Previewer::VideoPreviewer и ActiveStorage::Previewer::PDFPreviewer. Создайте пользовательские превью-генераторы, унаследовав от 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::PDFPreviewer, ActiveStorage::Previewer::VideoPreviewer ]

# Add a custom previewer for Microsoft Office documents:
Rails.application.config.active_storage.previewers << DOCXPreviewer
# => [ ActiveStorage::Previewer::PDFPreviewer, 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 35
def initialize(blob, variation_or_variation_key)
  @blob, @variation = blob, ActiveStorage::Variation.wrap(variation_or_variation_key)
end

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

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

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

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

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

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

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

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

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

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

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

Spec-Zone.ru

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