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