—
title: Shrine 2.16.0¶ ↑
New Features¶ ↑
- 
The
:download_optionsoption has been added to thedownload_endpointplugin, for specifying options passed toStorage#open. 
rb   plugin :download_endpoint,     download_options: {       sse_customer_algorithm: "AES256",       sse_customer_key:       "secret_key",       sse_customer_key_md5:   "secret_key_md5",     } 
- 
The
:upload_open_optionsoption has been added to thederivation_endpointplugin, for specifying options passed toStorage#openwhen downloading a cached derivation result. 
rb   plugin :download_endpoint,     upload: true,     upload_open_options: { response_content_encoding: "gzip" } 
Other improvements¶ ↑
- 
The
rack_responseandderivation_endpointplugins now don’t return anyContent-Typeresponse header if the MIME type could not be determined from the file extension. Previously it theContent-Typeheader would default toapplication/octet-stream, which would force the browser to view the file as generic binary content, as opposed to doing its own MIME type sniffing. - 
Fixed
delete_rawplugin breakingderivation_endpointwhen:uploadwas enabled. - 
Fixed a few things in the
Shrine::DerivationAPI: - 
Derivation#uploaddoesn’t close the input file anymore - 
Derivation#uploadnow requires input file to respond to#path - 
Derivation#uploadnow deletes the internally generated derivation result - 
Derivation#processednow works when derivation result is aFileobject - 
The official demo app now shows the
derivation_endpointplugin. - 
The
#to_rack_responsemethod from therack_responseplugin now always opens theUploadedFile, and does so upfront. This means if ther are any download errors, they will bubble up from#to_rack_responseas opposed to when the response body is iterated over. - 
When
store_dimensionsplugin was overridingShrine#extract_metadata, it made the second argument (thecontexthash) mandatory. This has been fixed, now the second argument is optional again.