Method: ActiveStorage::Service::S3Service#compose

Defined in:
lib/active_storage/service/s3_service.rb

#compose(source_keys, destination_key, filename: nil, content_type: nil, disposition: nil, custom_metadata: {}) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/active_storage/service/s3_service.rb', line 101

def compose(source_keys, destination_key, filename: nil, content_type: nil, disposition: nil, custom_metadata: {})
  content_disposition = content_disposition_with(type: disposition, filename: filename) if disposition && filename

  upload_stream(
    key: destination_key,
    content_type: content_type,
    content_disposition: content_disposition,
    part_size: MINIMUM_UPLOAD_PART_SIZE,
    metadata: ,
    **upload_options
  ) do |out|
    source_keys.each do |source_key|
      stream(source_key) do |chunk|
        IO.copy_stream(StringIO.new(chunk), out)
      end
    end
  end
end