40 lines
		
	
	
		
			862 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			862 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
if Rails.configuration.x.use_vips
 | 
						|
  ENV['VIPS_BLOCK_UNTRUSTED'] = 'true'
 | 
						|
 | 
						|
  require 'vips'
 | 
						|
 | 
						|
  unless Vips.at_least_libvips?(8, 13)
 | 
						|
    abort <<~ERROR.squish
 | 
						|
      Incompatible libvips version (#{Vips.version_string}), please install libvips >= 8.13
 | 
						|
    ERROR
 | 
						|
  end
 | 
						|
 | 
						|
  Vips.block('VipsForeign', true)
 | 
						|
 | 
						|
  %w(
 | 
						|
    VipsForeignLoadNsgif
 | 
						|
    VipsForeignLoadJpeg
 | 
						|
    VipsForeignLoadPng
 | 
						|
    VipsForeignLoadWebp
 | 
						|
    VipsForeignLoadHeif
 | 
						|
    VipsForeignSavePng
 | 
						|
    VipsForeignSaveSpng
 | 
						|
    VipsForeignSaveJpeg
 | 
						|
    VipsForeignSaveWebp
 | 
						|
  ).each do |operation|
 | 
						|
    Vips.block(operation, false)
 | 
						|
  end
 | 
						|
 | 
						|
  Vips.block_untrusted(true)
 | 
						|
end
 | 
						|
 | 
						|
# In some places of the code, we rescue this exception, but we don't always
 | 
						|
# load libvips, so it may be an undefined constant:
 | 
						|
unless defined?(Vips)
 | 
						|
  module Vips
 | 
						|
    class Error < StandardError; end
 | 
						|
  end
 | 
						|
end
 |