Spec-Zone.ru › Ruby on Rails 6.1

класс ActiveStorage::Previewer

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

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

Атрибуты

blob[R]

Публичные методы класса

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

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

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

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

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

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

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

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

Загружает blob в временный файл на диске. Возвращает временный файл.

draw(*argv) { |file| ... } Показать исходный код
# File activestorage/lib/active_storage/previewer.rb, line 47
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 77
def logger #:doc:
  ActiveStorage.logger
end
tmpdir() Показать исходный код
# File activestorage/lib/active_storage/previewer.rb, line 81
def tmpdir #:doc:
  Dir.tmpdir
end

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

Spec-Zone.ru

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