ShrineでS3にアップロードする際のmetadataを正しく設定する
解決
image_uri = Addressable::URI.convert_path("https://path/to/image.jpg")
URI.parse(image_uri).open do |file|
metadata = {
"mime_type" => MIME::Types.type_for(@image_uri.to_s).first.content_type,
"filename" => @image_uri.basename,
}
# metadataが正しく設定されていないと、uploaded_file.metadataも空
uploaded_file = Shrine.upload(file, storage_key, metadata: metadata)
end
注意
metadataのキーをシンボルにすると設定されないので注意。
shrine/s3.rb at master · shrinerb/shrine · GitHub でmetadataの検索が文字列
でなされている為。
shrine_metadata.values_at("mime_type", "filename")