class ActiveStorage::Analyzer
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.
Attributes
Public Class Methods
Implement this method in a concrete subclass. Have it return true when given a blob from which the analyzer can extract metadata.
# File activestorage/lib/active_storage/analyzer.rb, line 13 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.
# File activestorage/lib/active_storage/analyzer.rb, line 19 def self.analyze_later? true end
# File activestorage/lib/active_storage/analyzer.rb, line 23 def initialize(blob) @blob = blob end
Public Instance Methods
Override this method in a concrete subclass. Have it return a Hash
of metadata.
# File activestorage/lib/active_storage/analyzer.rb, line 28 def metadata raise NotImplementedError end
Private Instance Methods
Downloads the blob to a tempfile on disk. Yields the tempfile.
# File activestorage/lib/active_storage/analyzer.rb, line 34 def download_blob_to_tempfile(&block) # :doc: blob.open tmpdir: tmpdir, &block end
# File activestorage/lib/active_storage/analyzer.rb, line 46 def instrument(analyzer, &block) # :doc: ActiveSupport::Notifications.instrument("analyze.active_storage", analyzer: analyzer, &block) end
# File activestorage/lib/active_storage/analyzer.rb, line 38 def logger # :doc: ActiveStorage.logger end
# File activestorage/lib/active_storage/analyzer.rb, line 42 def tmpdir # :doc: Dir.tmpdir end