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.

Namespace

Class

Methods

Attributes

[R] blob

Class Public methods

accept?(blob)

Implement this method in a concrete subclass. Have it return true when given a blob from which the analyzer can extract metadata.

📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 13
    def self.accept?(blob)
      false
    end
🔎 See on GitHub

analyze_later?()

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.

📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 19
    def self.analyze_later?
      true
    end
🔎 See on GitHub

new(blob)

📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 23
    def initialize(blob)
      @blob = blob
    end
🔎 See on GitHub

Instance Public methods

metadata()

Override this method in a concrete subclass. Have it return a Hash of metadata.

📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 28
    def metadata
      raise NotImplementedError
    end
🔎 See on GitHub

Instance Private methods

download_blob_to_tempfile(&block)

Downloads the blob to a tempfile on disk. Yields the tempfile.

📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 34
      def download_blob_to_tempfile(&block) # :doc:
        blob.open tmpdir: tmpdir, &block
      end
🔎 See on GitHub

instrument(analyzer, &block)

📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 46
      def instrument(analyzer, &block) # :doc:
        ActiveSupport::Notifications.instrument("analyze.active_storage", analyzer: analyzer, &block)
      end
🔎 See on GitHub

logger()

📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 38
      def logger # :doc:
        ActiveStorage.logger
      end
🔎 See on GitHub

tmpdir()

📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 42
      def tmpdir # :doc:
        Dir.tmpdir
      end
🔎 See on GitHub