Skip to main content

Shrine 2.16.0

New Features

  • The :download_options option has been added to the download_endpoint plugin, for specifying options passed to Storage#open.

    plugin :download_endpoint,
      download_options: {
        sse_customer_algorithm: "AES256",
        sse_customer_key:       "secret_key",
        sse_customer_key_md5:   "secret_key_md5",
  • The :upload_open_options option has been added to the derivation_endpoint plugin, for specifying options passed to Storage#open when downloading a cached derivation result.

    plugin :download_endpoint,
      upload: true,
      upload_open_options: { response_content_encoding: "gzip" }

Other improvements

  • The rack_response and derivation_endpoint plugins now don't return any Content-Type response header if the MIME type could not be determined from the file extension. Previously it the Content-Type header would default to application/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_raw plugin breaking derivation_endpoint when :upload was enabled.

  • Fixed a few things in the Shrine::Derivation API:

    • Derivation#upload doesn't close the input file anymore
    • Derivation#upload now requires input file to respond to #path
    • Derivation#upload now deletes the internally generated derivation result
    • Derivation#processed now works when derivation result is a File object
  • The official demo app now shows the derivation_endpoint plugin.

  • The #to_rack_response method from the rack_response plugin now always opens the UploadedFile, and does so upfront. This means if ther are any download errors, they will bubble up from #to_rack_response as opposed to when the response body is iterated over.

  • When store_dimensions plugin was overriding Shrine#extract_metadata, it made the second argument (the context hash) mandatory. This has been fixed, now the second argument is optional again.