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.
Namespace
Class
- ActiveStorage::Analyzer::AudioAnalyzer
- ActiveStorage::Analyzer::ImageAnalyzer
- ActiveStorage::Analyzer::VideoAnalyzer
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 13
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 19
def self.analyze_later?
true
end
🔎 See on GitHub
new(blob)
📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 23
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 28
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 34
def download_blob_to_tempfile(&block) # :doc:
blob.open tmpdir: tmpdir, &block
end
🔎 See on GitHub
instrument(analyzer, &block)
📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 46
def instrument(analyzer, &block) # :doc:
ActiveSupport::Notifications.instrument("analyze.active_storage", analyzer: analyzer, &block)
end
🔎 See on GitHub
logger()
📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 38
def logger # :doc:
ActiveStorage.logger
end
🔎 See on GitHub
tmpdir()
📝 Source code
# File activestorage/lib/active_storage/analyzer.rb, line 42
def tmpdir # :doc:
Dir.tmpdir
end
🔎 See on GitHub