Spec-Zone.ru › Ruby on Rails 8.1

модуль ActiveStorage::Blob::Analyzable

Анализируемый blob Active Storage

Открытые методы экземпляра

analyze () Показать исходный код
# File activestorage/app/models/active_storage/blob/analyzable.rb, line 29
def analyze
  update! metadata: metadata.merge(extract_metadata_via_analyzer)
end

Извлекает и сохраняет метаданные файла, связанного с этим blob, с помощью подходящего анализатора. В Active Storage встроены анализаторы изображений и видео. См. ActiveStorage::Analyzer::ImageAnalyzer и ActiveStorage::Analyzer::VideoAnalyzer, чтобы узнать о конкретных атрибутах, которые они извлекают, и сторонних библиотеках, необходимых для их работы.

Чтобы выбрать анализатор для blob, Active Storage последовательно вызывает accept? для каждого зарегистрированного анализатора. Используется первый анализатор, для которого accept? возвращает true, когда ему передан blob. Если ни один зарегистрированный анализатор не поддерживает 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 при первом присоединении.

analyze_later () Показать исходный код
# 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

Ставит в очередь ActiveStorage::AnalyzeJob, вызывающий analyze, либо вызывает analyze непосредственно — в зависимости от конфигурации класса анализатора.

Этот метод автоматически вызывается для blob при его первом присоединении. Вы можете вызвать его, чтобы повторно проанализировать blob (например, если вы добавили новый анализатор или изменили существующий).

analyzed? () Показать исходный код
# File activestorage/app/models/active_storage/blob/analyzable.rb, line 46
def analyzed?
  analyzed
end

Возвращает true, если blob был проанализирован.

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

Spec-Zone.ru

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