Spec-Zone.ru › Ruby on Rails 8.1

class ActiveStorage::Previewer

Родительский класс:
Object

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

Это абстрактный базовый класс для средств предварительного просмотра, создающих изображения из блобов. Примеры конкретных подклассов см. в ActiveStorage::Previewer::MuPDFPreviewer и ActiveStorage::Previewer::VideoPreviewer.

Атрибуты

blob [R]

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

accept? (blob) Показать исходный код
# File activestorage/lib/active_storage/previewer.rb, line 14
def self.accept?(blob)
  false
end

Реализуйте этот метод в конкретном подклассе. Он должен возвращать true, если ему передан блоб, из которого средство предварительного просмотра может создать изображение.

new (blob) Показать исходный код
# File activestorage/lib/active_storage/previewer.rb, line 18
def initialize(blob)
  @blob = blob
end

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

preview (**options) Показать исходный код
# File activestorage/lib/active_storage/previewer.rb, line 25
def preview(**options)
  raise NotImplementedError
end

Переопределите этот метод в конкретном подклассе. Он должен передавать блоку прикрепляемое изображение для предварительного просмотра (то есть любой объект, принимаемый ActiveStorage::Attached::One#attach). Передайте дополнительные параметры базовому блобу, который создаётся.

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

download_blob_to_tempfile (&block) Показать исходный код
# File activestorage/lib/active_storage/previewer.rb, line 31
def download_blob_to_tempfile(&block) # :doc:
  blob.open tmpdir: tmpdir, &block
end

Загружает блоб во временный файл на диске. Передаёт временный файл блоку.

draw (*argv) { |file| ... } Показать исходный код
# File activestorage/lib/active_storage/previewer.rb, line 49
def draw(*argv) # :doc:
  open_tempfile do |file|
    instrument :preview, key: blob.key do
      capture(*argv, to: file)
    end

    yield file
  end
end

Выполняет системную команду, сохраняя её двоичный вывод во временный файл. Передаёт временный файл блоку.

Используйте этот метод для вызова системной библиотеки из командной оболочки (например, muPDF или FFmpeg) при создании изображения для предварительного просмотра. Полученный временный файл можно использовать как значение :io в прикрепляемом хеше:

def preview
  download_blob_to_tempfile do |input|
    draw "my-drawing-command", input.path, "--format", "png", "-" do |output|
      yield io: output, filename: "#{blob.filename.base}.png", content_type: "image/png"
    end
  end
end

Выходной временный файл открывается в каталоге, возвращаемом методом tmpdir.

logger () Показать исходный код
# File activestorage/lib/active_storage/previewer.rb, line 93
def logger # :doc:
  ActiveStorage.logger
end
tmpdir () Показать исходный код
# File activestorage/lib/active_storage/previewer.rb, line 97
def tmpdir # :doc:
  Dir.tmpdir
end

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

Spec-Zone.ru

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