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
 |