This is an abstract base class for analyzers, which extract metadata from blobs. See ActiveStorage::Analyzer::VideoAnalyzer
for an example of a concrete subclass.
# 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.
# 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.
# File activestorage/lib/active_storage/analyzer.rb, line 21 def initialize(blob) @blob = blob end
# 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.
# 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.
# File activestorage/lib/active_storage/analyzer.rb, line 44 def instrument(analyzer, &block) # :doc: ActiveSupport::Notifications.instrument("analyze.active_storage", analyzer: analyzer, &block) end
# File activestorage/lib/active_storage/analyzer.rb, line 36 def logger # :doc: ActiveStorage.logger end
# 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.