Class: ActiveStorage::Analyzer::ImageAnalyzer::Vips
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
|
|
Instance Chain:
|
|
Inherits: |
ActiveStorage::Analyzer::ImageAnalyzer
|
Defined in: | activestorage/lib/active_storage/analyzer/image_analyzer/vips.rb |
Overview
Constant Summary
-
ROTATIONS =
# File 'activestorage/lib/active_storage/analyzer/image_analyzer/vips.rb', line 40/Right-top|Left-bottom|Top-right|Bottom-left/
Class Attribute Summary
::ActiveStorage::Analyzer
- Inherited
.analyze_later? | Implement this method in concrete subclasses. |
Class Method Summary
::ActiveStorage::Analyzer::ImageAnalyzer
- Inherited
::ActiveStorage::Analyzer
- Inherited
Instance Attribute Summary
::ActiveStorage::Analyzer
- Inherited
Instance Method Summary
- #read_image private
- #rotated_image?(image) ⇒ Boolean private
::ActiveStorage::Analyzer::ImageAnalyzer
- Inherited
::ActiveStorage::Analyzer
- Inherited
#metadata | Override this method in a concrete subclass. |
#download_blob_to_tempfile | Downloads the blob to a tempfile on disk. |
#instrument, #logger, #tmpdir |
Constructor Details
This class inherits a constructor from ActiveStorage::Analyzer
Class Method Details
.accept?(blob) ⇒ Boolean
# File 'activestorage/lib/active_storage/analyzer/image_analyzer/vips.rb', line 7
def self.accept?(blob) super && ActiveStorage.variant_processor == :vips end
Instance Method Details
#read_image (private)
[ GitHub ]# File 'activestorage/lib/active_storage/analyzer/image_analyzer/vips.rb', line 12
def read_image begin require "ruby-vips" rescue LoadError logger.info "Skipping image analysis because the ruby-vips gem isn't installed" return {} end download_blob_to_tempfile do |file| image = instrument("vips") do # ruby-vips will raise Vips::Error if it can't find an appropriate loader for the file ::Vips::Image.new_from_file(file.path, access: :sequential) rescue ::Vips::Error logger.info "Skipping image analysis because Vips doesn't support the file" nil end if image yield image else {} end rescue ::Vips::Error => error logger.error "Skipping image analysis due to an Vips error: #{error.}" {} end end