Spec-Zone.ru › Ruby on Rails 6.1

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

Публичные методы экземпляра

analyze() Показать исходный код
# File activestorage/app/models/active_storage/blob/analyzable.rb, line 28
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 36
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 45
def analyzed?
  analyzed
end

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

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

Spec-Zone.ru

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