W3cubDocs

/Ruby on Rails 7.0

class ActiveStorage::Analyzer

Parent:
Object

This is an abstract base class for analyzers, which extract metadata from blobs. See ActiveStorage::Analyzer::VideoAnalyzer for an example of a concrete subclass.

Attributes

blob[R]

Public Class Methods

accept?(blob) Show source
# File activestorage/lib/active_storage/analyzer.rb, line 11
def self.accept?(blob)
  false
end

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

analyze_later?() Show source
# File activestorage/lib/active_storage/analyzer.rb, line 17
def self.analyze_later?
  true
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.

new(blob) Show source
# File activestorage/lib/active_storage/analyzer.rb, line 21
def initialize(blob)
  @blob = blob
end

Public Instance Methods

metadata() Show source
# File activestorage/lib/active_storage/analyzer.rb, line 26
def metadata
  raise NotImplementedError
end

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

Private Instance Methods

download_blob_to_tempfile(&block) Show source
# File activestorage/lib/active_storage/analyzer.rb, line 32
def download_blob_to_tempfile(&block) # :doc:
  blob.open tmpdir: tmpdir, &block
end

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

instrument(analyzer, &block) Show source
# File activestorage/lib/active_storage/analyzer.rb, line 44
def instrument(analyzer, &block) # :doc:
  ActiveSupport::Notifications.instrument("analyze.active_storage", analyzer: analyzer, &block)
end
logger() Show source
# File activestorage/lib/active_storage/analyzer.rb, line 36
def logger # :doc:
  ActiveStorage.logger
end
tmpdir() Show source
# File activestorage/lib/active_storage/analyzer.rb, line 40
def tmpdir # :doc:
  Dir.tmpdir
end

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