From: Tom Hughes Date: Fri, 5 Jul 2019 13:31:04 +0000 (+0100) Subject: Monkey patch Active Storage to set content type when uploading to S3 X-Git-Tag: live~3270^2~1 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/77ee8c1a53f4124e36012b01801ab801f36dd58d Monkey patch Active Storage to set content type when uploading to S3 --- diff --git a/config/initializers/active_storage.rb b/config/initializers/active_storage.rb new file mode 100644 index 000000000..3d2c91265 --- /dev/null +++ b/config/initializers/active_storage.rb @@ -0,0 +1,31 @@ +Rails.configuration.after_initialize do + require "active_storage/service/s3_service" + require_dependency "active_storage/variant" + + module OpenStreetMap + module ActiveStorage + module Variant + private + + def upload(image) + File.open(image.path, "r") { |file| service.upload(key, file, :content_type => content_type) } + end + end + + module S3Service + def upload(key, io, content_type:, **options) + @upload_options[:content_type] = content_type + super(key, io, **options) + @upload_options.delete(:content_type) + end + end + end + end + + ActiveStorage::Variant.prepend(OpenStreetMap::ActiveStorage::Variant) + ActiveStorage::Service::S3Service.prepend(OpenStreetMap::ActiveStorage::S3Service) + + ActiveSupport::Reloader.to_complete do + ActiveStorage::Variant.prepend(OpenStreetMap::ActiveStorage::Variant) + end +end