跳過內容 跳過搜尋

Active Storage Blob 可分析

方法
A

實例公有方法

分析()

使用相關分析器從與這個 blob 關聯的文件中擷取並儲存中繼資料。Active Storage 有內建的分析器,可針對圖片和影片使用。關於他們所擷取的特定屬性以及他們所需的第三方程式庫,請參閱 ActiveStorage::Analyzer::ImageAnalyzerActiveStorage::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 自動且非同步地加以分析。

# File activestorage/app/models/active_storage/blob/analyzable.rb, line 29
def analyze
  update! metadata: metadata.merge(extract_metadata_via_analyzer)
end

稍後分析()

排入呼叫 analyze 佇列的 ActiveStorage::AnalyzeJob,或根據分析器類別設定直接執行內嵌的 analyze

當 blob 在第一次附加時,此方法會自動呼叫。您可以呼叫它來重新分析 blob(例如,當您加入新的分析器或修改既有分析器時)。

# 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

已分析?()

如果 blob 已分析,傳回 true。

# File activestorage/app/models/active_storage/blob/analyzable.rb, line 46
def analyzed?
  analyzed
end