Active Storage 预览器
这是一个用于预览器的抽象基类,它从 Blob 生成图像。查看 ActiveStorage::Previewer::MuPDFPreviewer
和 ActiveStorage::Previewer::VideoPreviewer
以获取具体子类的示例。
命名空间
- 类 ActiveStorage::Previewer::MuPDFPreviewer
- 类 ActiveStorage::Previewer::PopplerPDFPreviewer
- 类 ActiveStorage::Previewer::VideoPreviewer
方法
属性
[R] | blob |
类公共方法
accept?(blob) 链接
在具体的子类中实现此方法。当给定一个预览器可以从中生成图像的 Blob 时,它返回 true。
源代码:显示 | 在 GitHub 上
# File activestorage/lib/active_storage/previewer.rb, line 14 def self.accept?(blob) false end
new(blob) 链接
源代码:显示 | 在 GitHub 上
# File activestorage/lib/active_storage/previewer.rb, line 18 def initialize(blob) @blob = blob end
实例公共方法
preview(**options) 链接
在具体的子类中重写此方法。让它生成一个可附加的预览图像(即任何被 ActiveStorage::Attached::One#attach
接受的东西)。将附加选项传递给创建的底层 Blob。
源代码:显示 | 在 GitHub 上
# File activestorage/lib/active_storage/previewer.rb, line 25 def preview(**options) raise NotImplementedError end
实例私有方法
download_blob_to_tempfile(&block) 链接
将 Blob 下载到磁盘上的临时文件。生成临时文件。
源代码:显示 | 在 GitHub 上
# File activestorage/lib/active_storage/previewer.rb, line 31 def download_blob_to_tempfile(&block) # :doc: blob.open tmpdir: tmpdir, &block end
draw(*argv) 链接
执行系统命令,将它的二进制输出捕获到临时文件。生成临时文件。
使用此方法将系统库(例如 muPDF 或 FFmpeg)外壳化以生成预览图像。生成的临时文件可以用作可附加的 Hash 中的 :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
返回的目录中打开。
源代码:显示 | 在 GitHub 上
# 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
logger() 链接
源代码:显示 | 在 GitHub 上
# File activestorage/lib/active_storage/previewer.rb, line 93 def logger # :doc: ActiveStorage.logger end
tmpdir() 链接
源代码:显示 | 在 GitHub 上
# File activestorage/lib/active_storage/previewer.rb, line 97 def tmpdir # :doc: Dir.tmpdir end