fix: s3_force_single_request not parsed (#17922)
				
					
				
			This commit is contained in:
		
							parent
							
								
									44b7be45f1
								
							
						
					
					
						commit
						39b489ba4c
					
				
					 3 changed files with 20 additions and 22 deletions
				
			
		| 
						 | 
				
			
			@ -27,7 +27,6 @@ require_relative '../lib/sanitize_ext/sanitize_config'
 | 
			
		|||
require_relative '../lib/redis/namespace_extensions'
 | 
			
		||||
require_relative '../lib/paperclip/url_generator_extensions'
 | 
			
		||||
require_relative '../lib/paperclip/attachment_extensions'
 | 
			
		||||
require_relative '../lib/paperclip/storage_extensions'
 | 
			
		||||
require_relative '../lib/paperclip/lazy_thumbnail'
 | 
			
		||||
require_relative '../lib/paperclip/gif_transcoder'
 | 
			
		||||
require_relative '../lib/paperclip/transcoder'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,6 +83,26 @@ if ENV['S3_ENABLED'] == 'true'
 | 
			
		|||
      s3_host_alias: ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST']
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Some S3-compatible providers might not actually be compatible with some APIs
 | 
			
		||||
  # used by kt-paperclip, see https://github.com/mastodon/mastodon/issues/16822
 | 
			
		||||
  if ENV['S3_FORCE_SINGLE_REQUEST'] == 'true'
 | 
			
		||||
    module Paperclip
 | 
			
		||||
      module Storage
 | 
			
		||||
        module S3Extensions
 | 
			
		||||
          def copy_to_local_file(style, local_dest_path)
 | 
			
		||||
            log("copying #{path(style)} to local file #{local_dest_path}")
 | 
			
		||||
            s3_object(style).download_file(local_dest_path, { mode: 'single_request' })
 | 
			
		||||
          rescue Aws::Errors::ServiceError => e
 | 
			
		||||
            warn("#{e} - cannot copy #{path(style)} to local file #{local_dest_path}")
 | 
			
		||||
            false
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    Paperclip::Storage::S3.prepend(Paperclip::Storage::S3Extensions)
 | 
			
		||||
  end
 | 
			
		||||
elsif ENV['SWIFT_ENABLED'] == 'true'
 | 
			
		||||
  require 'fog/openstack'
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,21 +0,0 @@
 | 
			
		|||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
# Some S3-compatible providers might not actually be compatible with some APIs
 | 
			
		||||
# used by kt-paperclip, see https://github.com/mastodon/mastodon/issues/16822
 | 
			
		||||
if ENV['S3_ENABLED'] == 'true' && ENV['S3_FORCE_SINGLE_REQUEST'] == 'true'
 | 
			
		||||
  module Paperclip
 | 
			
		||||
    module Storage
 | 
			
		||||
      module S3Extensions
 | 
			
		||||
        def copy_to_local_file(style, local_dest_path)
 | 
			
		||||
          log("copying #{path(style)} to local file #{local_dest_path}")
 | 
			
		||||
          s3_object(style).download_file(local_dest_path, { mode: 'single_request' })
 | 
			
		||||
        rescue Aws::Errors::ServiceError => e
 | 
			
		||||
          warn("#{e} - cannot copy #{path(style)} to local file #{local_dest_path}")
 | 
			
		||||
          false
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  Paperclip::Storage::S3.prepend(Paperclip::Storage::S3Extensions)
 | 
			
		||||
end
 | 
			
		||||
		Reference in a new issue