blob: caa25418a5c9150bcda2e3b982df1562f300c838 (
plain) (
tree)
|
|
# frozen_string_literal: true
module ActiveStorage
# This is an abstract base class for analyzers, which extract metadata from blobs. See
# ActiveStorage::Analyzer::ImageAnalyzer 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
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 tempdir: tempdir, &block
end
def logger #:doc:
ActiveStorage.logger
end
def tempdir #:doc:
Dir.tmpdir
end
end
end
|