Active Storage Blob 可分析
实例公共方法
analyze() 链接
使用相关分析器从与此 blob 关联的文件中提取并存储元数据。Active Storage 随附用于图像和视频的内置分析器。有关他们提取的特定属性和他们需要的第三方库的信息,请参阅 ActiveStorage::Analyzer::ImageAnalyzer
和 ActiveStorage::Analyzer::VideoAnalyzer
。
要为 blob 选择分析器,Active Storage 按顺序对每个已注册的分析器调用 accept?
。它使用第一个在给定 blob 时 accept?
返回 true 的分析器。如果没有已注册的分析器接受该 blob,则不会从中提取元数据。
在 Rails 应用程序中,通过在初始化程序中操作 Rails.application.config.active_storage.analyzers
来添加或删除分析器
# Add a custom analyzer for Microsoft Office documents:
Rails.application.config.active_storage.analyzers.append DOCXAnalyzer
# Remove the built-in video analyzer:
Rails.application.config.active_storage.analyzers.delete ActiveStorage::Analyzer::VideoAnalyzer
在 Rails 应用程序之外,操作 ActiveStorage.analyzers
。
通常不需要从 Rails 应用程序调用此方法。当新 blob 第一次附加时,它们会通过 analyze_later
自动异步分析。
来源:显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/blob/analyzable.rb, line 29 def analyze update! metadata: metadata.merge(extract_metadata_via_analyzer) end
analyze_later() 链接
排入队列一个 ActiveStorage::AnalyzeJob
,它调用 analyze
,或基于分析器类配置内联调用 analyze
。
当 blob 第一次附加时,会自动调用此方法。你可以调用它来再次分析 blob(例如,如果你添加了一个新分析器或修改了一个现有分析器)。
来源:显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/blob/analyzable.rb, line 37 def analyze_later if analyzer_class.analyze_later? ActiveStorage::AnalyzeJob.perform_later(self) else analyze end end
analyzed?() 链接
如果已分析该 blob,则返回 true。
源:显示 | 在 GitHub 上
# File activestorage/app/models/active_storage/blob/analyzable.rb, line 46 def analyzed? analyzed end