Class: ActiveStorage::Analyzer
Relationships & Source Files | |
Namespace Children | |
Classes:
| |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
AudioAnalyzer, ImageAnalyzer, ActiveStorage::Analyzer::NullAnalyzer, VideoAnalyzer, ImageAnalyzer::ImageMagick, ImageAnalyzer::Vips
|
|
Inherits: | Object |
Defined in: | activestorage/lib/active_storage/analyzer.rb |
Overview
This is an abstract base class for analyzers, which extract metadata from blobs. See VideoAnalyzer
for an example of a concrete subclass.
Class Attribute Summary
-
.analyze_later? ⇒ Boolean
readonly
Implement this method in concrete subclasses.
Class Method Summary
-
.accept?(blob) ⇒ Boolean
Implement this method in a concrete subclass.
- .new(blob) ⇒ Analyzer constructor
Instance Attribute Summary
- #blob readonly
Instance Method Summary
-
#metadata
Override this method in a concrete subclass.
-
#download_blob_to_tempfile(&block)
private
Downloads the blob to a tempfile on disk.
- #instrument(analyzer, &block) private
- #logger private
- #tmpdir private
Constructor Details
.new(blob) ⇒ Analyzer
Class Attribute Details
.analyze_later? ⇒ Boolean
(readonly)
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
Class Method Details
.accept?(blob) ⇒ Boolean
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
Instance Attribute Details
#blob (readonly)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer.rb', line 9
attr_reader :blob
Instance Method Details
#download_blob_to_tempfile(&block) (private)
Downloads the blob to a tempfile on disk. Yields the tempfile.
#instrument(analyzer, &block) (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer.rb', line 46
def instrument(analyzer, &block) # :doc: ActiveSupport::Notifications.instrument("analyze.active_storage", analyzer: analyzer, &block) end
#logger (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer.rb', line 38
def logger # :doc: ActiveStorage.logger end
#metadata
Override this method in a concrete subclass. Have it return a ::Hash
of metadata.
# File 'activestorage/lib/active_storage/analyzer.rb', line 28
def raise NotImplementedError end
#tmpdir (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer.rb', line 42
def tmpdir # :doc: Dir.tmpdir end