All Versions
Latest Version
Avg Release Cycle
65 days
Latest Release
219 days ago

Changelog History
Page 3

  • v2.12.0 Changes

    August 22, 2018
    • Ignore nil values when assigning files from a remote URL (@janko)

    • Ignore nil values when assigning files from a data URI (@GeekOnCoffee)

    • Raise Shrine::Error when child process failed to be spawned in :file MIME type analyzer (@hmistry)

    • 🔌 Use the appropriate unit in error messages of filesize validators in validation_helpers plugin (@hmistry)

    • 🛠 Fix subclassing not inheriting storage resolvers from superclass in dynamic_storage plugin (@janko)

    • 🗄 Un-deprecate assigning cached versions (@janko)

    • Add Attacher#assign_remote_url which allows dynamically passing downloader options (@janko)

    • 🔌 Deprecate :storages option in download_endpoint plugin in favour of UploadedFile#download_url (@janko)

    • ➕ Add :redirect option to download_endpoint plugin for redirecting to the uploaded file (@janko)

    • 🛠 Fix encoding issues when uploading IO object with unknown size to S3 (@janko)

    • Accept additional arguments in FileSystem#open (@janko)

    • ➕ Add :rewindable option to S3#open for disabling caching of read content to disk (@janko)

    • 👉 Make UploadedFile#open always open a new IO object and close the previous one (@janko)

  • v2.11.0 Changes

    April 28, 2018
    • ➕ Add Shrine.with_file for temporarily converting an IO-like object into a file (@janko)

    • ➕ Add :method value to the S3#presign result indicating the HTTP verb that should be used (@janko)

    • ➕ Add ability to specify method: :put in S3#presign to generate data for PUT upload (@janko)

    • Return a Struct instead of a Aws::S3::PresignedPost object in S3#presign (@janko)

    • 🗄 Deprecate Storage#presign returning a custom object in presign_endpoint (@janko)

    • 👍 Allow Storage#presign to return a Hash in presign_endpoint (@janko)

    • ➕ Add ability to specify upload checksum in upload_endpoint plugin (@janko)

    • 💎 Don't raise exception in :mini_magick and :ruby_vips dimensions analyzers when image is invalid (@janko)

    • Don't remove bucket name from S3 URL path with :host when :force_path_style is set (@janko)

    • Correctly determine MIME type from extension of empty files (@janko)

    • Modify UploadedFile#download not to reopen the uploaded file if it's already open (@janko)

    • ➕ Add UploadedFile#stream for streaming content into a writable object (@janko)

    • 🔌 Deprecate direct_upload plugin in favor of upload_endpoint and presign_endpoint plugins (@janko)

  • v2.10.0 Changes

    March 28, 2018
    • Add :fastimage analyzer to determine_mime_type plugin (@mokolabs)

    • 📇 Keep download endpoint URL the same regardless of metadata ordering (@MSchmidt)

    • Remove :rack_mime extension inferrer from the infer_extension plugin (@janko)

    • 👍 Allow UploadedFile#download to accept a block for temporary file download (@janko)

    • Add :ruby_vips analyzer to store_dimensions plugin (@janko)

    • Add :mini_magick analyzer to store_dimensions plugin (@janko)

    • 🌲 Soft-rename :heroku logging format to :logfmt (@janko)

    • 🗄 Deprecate Shrine::IO_METHODS constant (@janko)

    • Don't require IO size to be known on upload (@janko)

    • Inherit the logger on subclassing Shrine and make it shared across subclasses (@hmistry)

  • v2.9.0 Changes

    January 27, 2018
    • 👌 Support arrays of files in versions plugin (@janko)

    • Added :marcel analyzer to determine_mime_type plugin (@janko)

    • 🔌 Deprecate :filename option of the data_uri plugin in favour of the new infer_extension plugin (@janko)

    • ➕ Add infer_extension plugin for automatically deducing upload location extension from MIME type (@janko)

    • 0️⃣ Apply default storage options passed via in backgrounding plugin (@janko)

    • 🛠 Fix S3 storage replacing spaces in filename with "+" symbols (@ndbroadbent)

    • 🗄 Deprecate the multi_delete plugin (@janko)

    • 👍 Allow calling UploadedFile#open without passing a block (@hmistry)

    • ✂ Delete tempfiles in case of errors in UploadedFile#download and Storage::S3#download (@hmistry)

    • Freeze all string literals (@hmistry)

    • 👍 Allow passing options to Model#<attachment>_attacher for overriding Attacher options (@janko)

  • v2.8.0 Changes

    October 11, 2017
    • Expand relative directory paths when initializing Storage::FileSystem (@janko)

    • 🛠 Fix logging plugin erroring on :json format when ActiveSupport is loaded (@janko)

    • 👍 Allow Storage::S3#clear! to take a block for specifying which objects to delete (@janko)

    • 👉 Make :filemagic analyzer close the FileMagic descriptor even in case of exceptions (@janko)

    • 👉 Make :file analyzer work for potential file types which have magic bytes farther than 256 KB (@janko)

    • 🗄 Deprecate aws-sdk 2.x in favour of the new aws-sdk-s3 gem (@janko)

    • Modify UploadedFile#extension to always return the extension in lowercase format (@janko)

    • Downcase the original file extension when generating an upload location (@janko)

    • 👍 Allow specifying the full record attribute name in metadata_attributes plugin (@janko)

    • 👍 Allow specifying metadata mappings on metadata_attributes plugin initialization (@janko)

    • Add support for ranged requests in download_endpoint and rack_response plugins (@janko)

    • 👍 Allow Storage::S3#open and Storage::S3#download to accept additional options (@janko)

    • Forward any options given to UploadedFile#open or UploadedFile#download to the storage (@janko)

    • ⚡️ Update direct_upload plugin to support Roda 3 (@janko)

  • v2.7.0 Changes

    September 11, 2017
    • 🗄 Deprecate the Shrine::DownloadEndpoint constant over Shrine.download_endpoint (@janko)

    • 👍 Allow an additional #headers attribute on presigns and return it in presign_endpoint (@janko)

    • Allow overriding upload_endpoint and presign_endpoint options per-endpoint (@janko)

    • Add :presign and :rack_response options to presign_endpoint (@janko)

    • Add :upload, :upload_context and :rack_response options to upload_endpoint (@janko)

    • Modify upload_endpoint and presign_endpoint to return text/plain error responses (@janko)

    • ➕ Add :request upload context parameter in upload_endpoint (@janko)

    • 🔄 Change :action upload context parameter to :upload in upload_endpoint (@janko)

    • Return 405 Method Not Allowed on invalid HTTP verb in upload_endpoint and presign_endpoint (@janko)

    • Modify upload_endpoint and presign_endpoint to handle requests on the root URL (@janko)

    • Allow creating Rack apps dynamically in upload_endpoint and presign_endpoint (@janko)

    • Remove Roda dependency from upload_endpoint and presign_endpoint plugins (@janko)

    • 🔌 Split direct_upload plugin into upload_endpoint and presign_endpoint plugins (@janko)

    • 👌 Support the new aws-sdk-s3 gem in Shrine::Storage::S3 (@lizdeika)

    • Return Cache-Control header in download_endpoint to permanently cache responses (@janko)

    • Return 404 Not Found when uploaded file doesn't exist in download_endpoint (@janko)

    • 📇 Utilize uploaded file metadata when generating response in download_endpoint (@janko)

    • 🛠 Fix deprecation warning when generating fake presign with query parameters (@janko)

    • 🚩 Don't raise error in file and filemagic MIME type analyzer on empty IO (@ypresto)

    • 🔌 Require down in remote_url plugin even when a custom downloader is given (@janko)

    • 🔌 Require time library in logging plugin to fix undefined method #iso8601 for Time (@janko)

    • 👍 Allow validations defined on a superclass to be reused in a subclass (@printercu)

    • 👍 Allow validation error messages to be an array of arguments for ActiveRecord (@janko)

    • 👍 Allow model subclasses to override the attachment with a different uploader (@janko)

    • Accept options like store: and cache: via (@ypresto)

    • Raise ArgumentError when :bucket option is nil in Shrine::Storage::S3#initialize (@janko)

    • Don't wrap base64-encoded content into 60 columns in UploadedFile#base64 and #data_uri (@janko)

    • Add :mini_mime option to determine_mime_type plugin for using the mini_mime gem (@janko)

    • 🛠 Fix data_uri plugin raising an exception on Ruby 2.4.1 when using raw data URIs (@janko)

    • Implement Shrine::Storage::S3#open using the aws-sdk gem instead of (@janko)

    • 🗄 Un-deprecate Shrine.uploaded_file accepting file data as JSON string (@janko)

    • Don't wrap base64-formatted signatures to 60 columns (@janko)

    • Don't add a newline at the end of the base64-formatted signature (@janko)

  • v2.6.1 Changes

    April 12, 2017
    • 🛠 Fix download_endpoint returning incorrect reponse body in some cases (@janko)
  • v2.6.0 Changes

    April 04, 2017
    • 👉 Make Shrine::Storage::FileSystem#path public which returns path to the file as a Pathname object (@janko)

    • Add Shrine.rack_file to rack_file plugin for converting Rack uploaded file hash into an IO (@janko)

    • 🗄 Deprecate passing a Rack file hash to Shrine#upload (@janko)

    • Expose Shrine.extract_dimensions and Shrine.dimensions_analyzers in store_dimensions plugin (@janko)

    • ➕ Add metadata_attributes plugin for syncing attachment metadata with additional record attributes (@janko)

    • Remove the undocumented :magic_header option from determine_mime_type plugin (@janko)

    • Expose Shrine.determine_mime_type and Shrine.mime_type_analyzers in determine_mime_type plugin (@janko)

    • ➕ Add signature plugin for calculating a SHA{1,256,384,512}/MD5/CRC32 hash of a file (@janko)

    • 🔌 Return the resolved plugin module when calling Shrine.plugin (@janko)

    • 📇 Accept hash of metadata with symbol keys as well in add_metadata block (@janko)

    • ➕ Add refresh_metadata plugin for re-extracting metadata from an uploaded file (@janko)

    • 👍 Allow S3 storage to use parallelized multipart upload for files from FileSystem storage as well (@janko)

    • 👌 Improve default multipart copy threshold for S3 storage (@janko)

    • 👍 Allow specifying multipart upload and copy thresholds separately in Shrine::Storage::S3 (@janko)

    • 🛠 Fix Storage::FileSystem#clear! not deleting old files if there are newer files in the same directory (@janko)

    • 👍 Allow media type in the data URI to have additional parameters (@janko)

    • URI-decode non-base64 data URIs, as such data URIs are URI-encoded according to the specification (@janko)

    • 👌 Improve performance of parsing data URIs by 10x switching from a regex to StringScanner (@janko)

    • ⬇️ Reduce memory usage of Shrine.data_uri and UploadedFile#base64 by at least 2x (@janko)

    • Add Shrine.data_uri to data_uri plugin which parses and converts the given data URI to an IO object (@janko)

    • 🔌 Make rack_file plugin work with HashWithIndifferentAccess-like objects such as Hashie::Mash (@janko)

    • 🔦 Expose Aws::S3::Client via Shrine::Storage::S3#client, and deprecate Shrine::Strorage::S3#s3 (@janko)

    • 🔌 Modify delete_raw plugin to delete any IOs that respond to #path (@janko)

    • Require the Tempfile standard library in lib/shrine.rb (@janko)

    • 🗄 Deprecate dimensions validations passing when a dimension is nil (@janko)

    • 🗄 Deprecate passing regexes to type/extension whitelists/blacklists in validation_helpers (@janko)

    • 0️⃣ Don't include list of blacklisted types and extensions in default validation_helpers messages (@janko)

    • 👌 Improve default error messages in validation_helpers plugin (@janko)

    • 🔌 Don't require the benchmark standard library in logging plugin (@janko)

    • Don't dirty the attacher in Attacher#set when attachment hasn't changed (@janko)

    • 📇 Rename Attacher#attached? to a more accurate Attacher#changed? (@janko)

    • 👍 Allow calling Attacher#finalize if attachment hasn't changed, instead of raising an error (@janko)

    • 👉 Make Shrine::Storage::S3#object method public (@janko)

    • Prevent autoloading race conditions in aws-sdk gem by eager loading the S3 service (@janko)

    • Raise Shrine::Error when Shrine#generate_location returns nil (@janko)

  • v2.5.0 Changes

    November 11, 2016
    • ➕ Add Attacher.default_url as the idiomatic way of declaring default URLs (@janko)

    • 👍 Allow uploaders themselves to accept Rack uploaded files when rack_file is loaded (@janko)

    • Raise a descriptive error when two versions are pointing to the same IO object (@janko)

    • 🔌 Make backgrounding plugin work with plain model instances (@janko)

    • 🔌 Make validation methods in validation_helpers plugin return whether validation succeeded (@janko)

    • 🔌 Make extension matching case insensitive in validation_helpers plugin (@jonasheinrich)

    • 🚚 Make remove_invalid plugin remove dirty state on attacher after removing invalid file (@janko)

    • 🚩 Raise error if Shrine::UploadedFile isn't initialized with valid data (@janko)

    • 🔌 Accept extension parameter without the dot in presign endpoint of direct_upload plugin (@jonasheinrich)

    • Add :fallback_to_original option to versions plugin for disabling fallback to original file (@janko)

    • ➕ Add #dimensions method to UploadedFile when loading store_dimensions plugin (@janko)

    • 📇 Make it possible to extract multiple metadata values at once with the add_metadata plugin (@janko)

  • v2.4.1 Changes

    October 17, 2016
    • 🚚 Move back JSON serialization from Attacher#write to Attacher#_set (@janko)

    • 🚚 Make remove_invalid plugin assign back a previous attachment if was there (@janko)

    • 🗄 Deprecate Storage::FileSystem#download (@janko)

    • In UploadedFile#download use extension from #original_filename if #id doesn't have it (@janko)