модуль ActiveStorage::Blob::Analyzable
Публичные методы экземпляра
# 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, когда они прикреплены в первый раз.
# 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 (например, если вы добавили новый анализатор или изменили существующий).
# 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.