This is an abstract base class for analyzers, which extract metadata from blobs. See ActiveStorage::Analyzer::ImageAnalyzer 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 11
    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 17
    def self.analyze_later?
      true
    end
🔎 See on GitHub

new(blob)

📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 21
    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 26
    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 32
      def download_blob_to_tempfile(&block) #:doc:
        blob.open tmpdir: tmpdir, &block
      end
🔎 See on GitHub

logger()

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

tmpdir()

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