Class: ActiveStorageValidations::Metadata
  
  
  
  
  
    - Inherits:
- 
      Object
      
        
          - Object
- ActiveStorageValidations::Metadata
 show all
    - Defined in:
- lib/active_storage_validations/metadata.rb
 
Defined Under Namespace
  
    
  
    
      Classes: InvalidImageError
    
  
  Instance Attribute Summary collapse
  
  
    
      Instance Method Summary
      collapse
    
    
  
  Constructor Details
  
    
  
  
    #initialize(file)  ⇒ Metadata 
  
  
  
  
    
Returns a new instance of Metadata.
   
 
  
  
    | 
7
8
9
10 | # File 'lib/active_storage_validations/metadata.rb', line 7
def initialize(file)
  require_image_processor
  @file = file
end | 
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    #file  ⇒ Object  
  
  
  
  
    
Returns the value of attribute file.
   
 
  
  
    | 
5
6
7 | # File 'lib/active_storage_validations/metadata.rb', line 5
def file
  @file
end | 
 
    
   
  
    Instance Method Details
    
      
  
  
    #exception_class  ⇒ Object 
  
  
  
  
    | 
16
17
18
19
20
21
22 | # File 'lib/active_storage_validations/metadata.rb', line 16
def exception_class
  if image_processor == :vips && defined?(Vips)
    Vips::Error
  elsif defined?(MiniMagick)
    MiniMagick::Error
  end
end | 
 
    
      
  
  
    #image_processor  ⇒ Object 
  
  
  
  
    | 
12
13
14 | # File 'lib/active_storage_validations/metadata.rb', line 12
def image_processor
  Rails.application.config.active_storage.variant_processor
end | 
 
    
      
  
  
    | 
32
33
34
35
36
37
38
39
40
41
42
43 | # File 'lib/active_storage_validations/metadata.rb', line 32
def metadata
  read_image do |image|
    if rotated_image?(image)
      { width: image.height, height: image.width }
    else
      { width: image.width, height: image.height }
    end
  end
rescue InvalidImageError
  logger.info "Skipping image analysis because ImageMagick or Vips doesn't support the file"
  {}
end | 
 
    
      
  
  
    #require_image_processor  ⇒ Object 
  
  
  
  
    | 
24
25
26
27
28
29
30 | # File 'lib/active_storage_validations/metadata.rb', line 24
def require_image_processor
  if image_processor == :vips
    require 'vips' unless defined?(Vips)
  else
    require 'mini_magick' unless defined?(MiniMagick)
  end
end | 
 
    
      
  
  
    #valid?  ⇒ Boolean 
  
  
  
  
    | 
45
46
47
48
49
50 | # File 'lib/active_storage_validations/metadata.rb', line 45
def valid?
  read_image
  true
rescue InvalidImageError
  false
end |