класс ActiveStorage::Previewer
Это абстрактный базовый класс для визуализаторов, которые генерируют изображения из блобов. См. ActiveStorage::Previewer::MuPDFPreviewer и ActiveStorage::Previewer::VideoPreviewer для примеров конкретных подклассов.
Атрибуты
Открытые методы класса
# File activestorage/lib/active_storage/previewer.rb, line 16 def self.accept?(blob) false end
Реализуйте этот метод в конкретном подклассе. Возвращайте true, если предоставленный blob подходит для генерации изображения визуализатором.
# File activestorage/lib/active_storage/previewer.rb, line 20 def initialize(blob) @blob = blob end
Открытые методы экземпляра
# File activestorage/lib/active_storage/previewer.rb, line 26 def preview raise NotImplementedError end
Переопределите этот метод в конкретном подклассе. Он должен возвращать пригодное для вставки превью-изображение (т.е. всё, что поддерживается ActiveStorage::Attached::One#attach).
Закрытые методы экземпляра
# File activestorage/lib/active_storage/previewer.rb, line 45
def draw(*argv) #:doc:
ActiveSupport::Notifications.instrument("preview.active_storage") do
open_tempfile_for_drawing do |file|
capture(*argv, to: file)
yield file
end
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
Выходной временный файл открывается в каталоге, возвращаемом методом ActiveStorage::Downloading#tempdir.
# File activestorage/lib/active_storage/previewer.rb, line 70 def logger #:doc: ActiveStorage.logger end
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.