Sha256: 5658da324955a31a89b318f05b2640794f87ec0bea05a70966b6a45b20778022
Contents?: true
Size: 1.36 KB
Versions: 39
Compression:
Stored size: 1.36 KB
Contents
# frozen_string_literal: true module ActiveStorage # = Active Storage \Analyzer # # This is an abstract base class for analyzers, which extract metadata from blobs. See # ActiveStorage::Analyzer::VideoAnalyzer for an example of a concrete subclass. class Analyzer attr_reader :blob # Implement this method in a concrete subclass. Have it return true when given a blob from which # the analyzer can extract metadata. def self.accept?(blob) false end # Implement this method in concrete subclasses. It will determine if blob analysis # should be done in a job or performed inline. By default, analysis is enqueued in a job. def self.analyze_later? true end def initialize(blob) @blob = blob end # Override this method in a concrete subclass. Have it return a Hash of metadata. def metadata raise NotImplementedError end private # Downloads the blob to a tempfile on disk. Yields the tempfile. def download_blob_to_tempfile(&block) # :doc: blob.open tmpdir: tmpdir, &block end def logger # :doc: ActiveStorage.logger end def tmpdir # :doc: Dir.tmpdir end def instrument(analyzer, &block) # :doc: ActiveSupport::Notifications.instrument("analyze.active_storage", analyzer: analyzer, &block) end end end
Version data entries
39 entries across 39 versions & 5 rubygems