class ActiveStorage::Analyzer::ImageAnalyzer::Vips
def read_image
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.message}" {} end end