All Versions
45
Latest Version
Avg Release Cycle
65 days
Latest Release
1382 days ago

Changelog History
Page 1

  • v3.4.0 Changes

    June 14, 2021
    • 💎 base – Fix passing options to Shrine.Attachment on Ruby 3.0 (@lucianghinda)

    • determine_mime_type – Return correct image/svg+xml MIME type for SVGs with :fastimage analyzer (@Bandes)

    • activerecord – Fix keyword argument warning when adding errors with options (@janko)

    • entity – Make Attacher#read method public (@janko)

    • entity – Reset attachment dirty tracking in Attacher#reload (@janko)

    • activerecord – Don't load the attacher on ActiveRecord::Base#reload if it hasn't yet been initialized (@janko)

    • sequel – Don't load the attacher on Sequel::Model#reload if it hasn't yet been initialized (@janko)

  • v3.3.0 Changes

    October 04, 2020
    • 👍 s3 - Support new Aws::S3::EncryptionV2::Client for client-side encryption (@janko)

    • derivation_endpoint – Reduce possibility of timing attacks when comparing signatures (@esparta)

    • 0️⃣ derivatives – Avoid downloading the attached file when calling default no-op processor (@janko)

    • derivatives – Add :download processor setting for skipping downloading source file (@jrochkind, @janko)

    • derivatives – Copy non-file source IO objects into local file before passing them to the processor (@jrochkind)

    • sequel – Call Attacher#reload in Sequel::Model#reload, which keeps rest of attacher state (@janko, @jrochkind)

    • activerecord – Call Attacher#reload in ActiveRecord::Base#reload, which keeps rest of attacher state (@janko, @jrochkind)

    • 📇 add_metadata – Add :skip_nil option for excluding metadata keys whose values are nil (@renchap)

    • store_dimensions – Add :auto_extraction option for disabling automatically extracting dimensions on upload (@renchap)

    • mirroring – Forward original upload options when mirroring upload (@corneverbruggen)

    • derivation_endpoint – Apply version URL option in derivation endpoint (@janko)

    • 🚚 remove_attachment – Delete removed file if a new file was attached right after removal (@janko)

    • upload_endpoint – Fix Shrine.upload_response not working in a Rails controller (@pldavid2)

    • presign_endpoint – Add OPTIONS route that newer versions of Uppy check (@janko)

    • derivatives – Add :create_on_promote option for auto-creating derivatives on promotion (@janko)

    • 👍 s3 – Add back support for client-side encryption (@janko)

    • memory – Ensure Memory#open returns content in original encoding (@jrochkind)

  • v3.2.2 Changes

    August 05, 2020
    • s3 – Fix S3#open not working on aws-sdk-core 3.104 and above (@janko)
  • v3.2.1 Changes

    January 12, 2020
    • derivation_endpoint – Use Rack::Files constant on Rack >= 2.1 (@janko)

    • 🛠 Fix Ruby 2.7 warnings regarding separation of positional and keyword arguments (@janko)

    • s3 – Make S3#open handle empty S3 objects (@janko)

  • v3.2.0 Changes

    December 17, 2019
    • validation – Run validation on Attacher#attach & Attacher#attach_cached instead of Attacher#change (@janko)

    • 🚚 remove_invalid – Activate also when Attacher#validate is run manually (@janko)

    • 🚚 remove_invalid – Fix incompatibility with derivatives plugin (@janko)

    • 🔌 type_predicates – Add new plugin with convenient UploadedFile predicate methods based on MIME type (@janko)

    • core – Allow assigning back current attached file data (@janko)

    • derivatives – Fix :derivative value inconsistency when derivatives are being promoted (@janko)

    • 📇 add_metadata – Add #add_metadata method for adding metadata to uploaded files (@janko)

    • 🛰 derivatives – Add :io and :attacher values to instrumentation event payload (@janko)

  • v3.1.0 Changes

    November 15, 2019
    • default_storage – Coerce storage key to symbol in Attacher#cache_key & Attacher#store_key (@janko)

    • core – Coerce storage key to symbol in Attacher#cache_key & Attacher#store_key (@janko)

    • 📇 add_metadata – Define metadata methods only for the target uploader class (@janko)

    • derivatives – Add :storage option to Attacher#create_derivatives (@janko)

    • 💎 store_dimensions – Propagate exceptions on loading ruby-vips in :vips analyzer (@janko)

    • signature – Allow skipping rewinding by passing rewind: false to Shrine.signature (@janko)

    • derivatives – Add Attacher.derivatives alias for Attacher.derivatives_processor (@janko)

  • v3.0.1 Changes

    October 17, 2019
    • 📇 metadata_attributes – Fix exception being raised when there is no attached file (@janko)

    • core – Simplify UploadedFile#inspect output (@janko)

  • v3.0.0 Changes

    October 14, 2019
    • derivation_endpoint – Pass action: :derivation when uploading derivation results (@janko)

    • core – Add Shrine::Attachment[] shorthand for Shrine::Attachment.new (@janko)

    • 🛠 core – Add Storage#delete_prefixed method for deleting all files in specified directory (@jrochkind)

    • 👕 linter – Return true in Storage::Linter#call so that it can be used with assert (@jrochkind)

    • 👕 linter – Allow Storage::Linter to accept a key that will be used for testing nonexistent file (@janko)

    • 📇 core – Infer file extension from filename metadata (@janko)

    • pretty_location – Add :class_underscore option for underscoring class name (@Uysim)

    • ⚡️ Update down dependency to ~> 5.0 (@janko)

    • 🔌 multi_cache – Add new plugin for whitelisting additional temporary storages (@janko, @jrochkind)

    • sequel – Extract callback code into attacher methods that can be overridden (@janko)

    • activerecord – Extract callback code into attacher methods that can be overridden (@janko)

    • derivation_endpoint – Stop re-opening File objects returned in derivation result (@janko)

    • derivation_endpoint – Allow only File or Tempfile object as derivation result (@janko)

    • download_endpoint – Add Shrine.download_response for calling in controller (@janko)

    • core – Fetch storage object lazily in Shrine instance (@janko)

    • 🔌 mirroring – Add new plugin for replicating uploads and deletes to other storages (@janko)

    • sequel – Rename :callbacks option to :hooks (@janko)

    • model – Add Attacher#set_model for setting model without loading attachment (@janko)

    • entity – Add Attacher#set_entity for setting entity without loading attachment (@janko)

    • entity – Define #<name>_attacher class method when including Shrine::Attachment (@janko)

    • 🛰 derivation_endpoint – Send only :derivation in the instrumentation event payload (@janko)

    • 0️⃣ default_storage – Add Attacher.default_cache and Attacher.default_store for settings (@janko)

    • 🗄 default_storage – Deprecate record & name arguments to storage block (@janko)

    • 0️⃣ default_storage – Evaluate storage block in context of Attacher instance (@janko)

    • 🔌 Unify persistence plugin interface (@janko)

    • upload_options – Keep Shrine#_upload private (@janko)

    • infer_extension – Keep Shrine#basic_location private (@janko)

    • model – Add #<name>_changed? method to attachment module (@janko)

    • 🔌 Make it easier for plugins to define entity and model attachment methods (@janko)

    • 🔌 form_assign – Add new plugin for assigning attachment from form params without a form object (@janko)

    • derivation_endpoint – Allow passing generic IO objects to Derivation#upload (@janko)

    • derivation_endpoint – Accept additional uploader options in Derivation#upload (@janko)

    • derivation_endpoint – Close the uploaded file in Derivation#upload (@janko)

    • core – Stop rescuing IO#close exceptions in Shrine#upload (@janko)

    • core – Add :delete option to Shrine#upload for deleting uploaded file (@janko)

    • s3 – Stop returning :object in Down::ChunkedIO#data in S3#open (@janko)

    • s3 – Eliminate #head_object request in S3#open (@janko)

    • 🚚 download_endpoint – Remove extra Storage#exists? check (@janko)

    • derivation_endpoint – Add Derivation#opened for retrieving an opened derivation result (@janko)

    • 🚚 derivation_endpoint – Remove extra Storage#exists? check when :upload is enabled but not :upload_redirect (@janko)

    • derivation_endpoint - Don't pass source UploadedFile object when :download is false (@janko)

    • 🚚 derivation_endpoint – Remove :include_uploaded_file option (@janko)

    • derivation_endpoint – Evaluate derivation block in context of Shrine::Derivation (@janko)

    • 🚚 derivation_endpoint – Remove :download_errors option (@janko)

    • memory – Raise Shrine::FileNotFound on nonexistent file in Memory#open (@janko)

    • file_system – Raise Shrine::FileNotFound on nonexistent file in FileSystem#open (@janko)

    • s3 – Raise Shrine::FileNotFound on nonexistent object in S3#open (@janko)

    • 👻 core – Add Shrine::FileNotFound exception and require storages to raise it on Storage#open (janko)

    • 📇 instrumentation – Remove :metadata from :options in metadata.shrine event (@janko)

    • 📇 instrumentation – Remove :location, :upload_options and :metadata from :options in upload.shrine event (@janko)

    • 📇 instrumentation – Add :metadata to the upload.shrine event (@janko)

    • 👍 download_endpoint – Drop support for legacy /:storage/:id URLs (@janko)

    • core – In UploadedFile#== require files to be of the same class (@janko)

    • core – Add :close option to Shrine#upload for preventing closing file after upload (@janko)

    • memory – Add Shrine::Storage::Memory from shrine-memory gem (@janko)

    • default_url_options – Rename to just url_options (@janko)

    • 🗄 delete_raw – Deprecate plugin in favour of derivatives (@janko)

    • 🗄 recache – Deprecate plugin in favour of derivatives (@janko)

    • 🗄 processing – Deprecate plugin in favour of derivatives (@janko)

    • 🗄 versions – Deprecate plugin in favour of derivatives (@janko)

    • 🔌 derivatives – Add new plugin for storing processed files (@janko)

    • derivation_endpoint – Allow using symbol and string derivation names interchangeably (@janko)

    • 🚚 dynamic_storage – Remove Shrine.dynamic_storages method (@janko)

    • core – Deep duplicate Shrine.opts on subclassing (@janko)

    • core – Add Attacher#file! which asserts that a file is attached (@janko)

    • core – Change Shrine.uploaded_file to raise ArgumentError on invalid input (@janko)

    • 🗄 module_include – Deprecate plugin over overriding core classes directly (@janko)

    • core – Add Attacher#cache_key and Attacher#store_key which return storage identifiers (@janko)

    • 👕 linter – Call Storage#open with options as second argument (@janko)

    • core – Allow data hash passed to UploadedFile.new to have symbol keys (@janko)

    • core – Change how Shrine::UploadedFile sets its state from the given data hash (@janko)

    • 🗄 core – Deprecate Storage#open not accepting additional options (@janko)

    • 📇 refresh_metadata – Add Attacher#refresh_metadata! method which integrates with model plugin (@janko)

    • instrumentation – Instrument any Storage#open calls in a new open.shrine event (@janko)

    • restore_cached_data – Forward options passed to Attacher#attach_cached to metadata extraction (@janko)

    • validation – Allow skipping validations on attaching by passing validate: false (@janko)

    • validation – Add :validate option to Attacher#assign or Attacher#attach for passing options to validation block (@janko)

    • 🔌 validation – Extract validation functionality into the new plugin (@janko)

    • 🔀 upload_options – Upload options from the block are now merged with passed options instead of replaced (@janko)

    • upload_endpoint – Stop passing Rack::Request object to the uploader (@janko)

    • 🔌 remote_url – Require custom downloaders to raise Shrine::Plugins::RemoteUrl::DownloadError for conversion into a validation error (@janko)

    • infer_extension – Fix compatibility with the pretty_location plugin (@janko)

    • 🚚 presign_endpoint – Remove deprecated Shrine::Plugins::PresignEndpoint::App constant (@janko)

    • 🚚 keep_files – Remove the ability to choose whether to keep only destroyed or only replaced files (@janko)

    • 🚚 infer_extension – Remove Shrine#infer_extension method (@janko)

    • default_url_options – Allow overriding passed URL options by deleting them inside the block (@janko)

    • cached_attachment_data – Rename Attacher#read_cached to Attacher#cached_data (@janko)

    • sequel – Add Attacher#atomic_promote and Attacher#atomic_persist (@janko)

    • 🚚 sequel – Remove persistence from Attacher#promote (@janko)

    • 🚚 activerecord – Remove persistence from Attacher#promote (@janko)

    • 🔌 atomic_helpers – Add new plugin with helper methods for atomic promotion and persistence (@janko)

    • backgrounding – Add Attacher#promote_block & Attacher#destroy_block for overriding class level blocks (@janko)

    • backgrounding – Add Attacher.promote_block & Attacher.destroy_block on class level (@janko)

    • 🚚 backgrounding – Remove overriding Attacher#swap with atomic promotion (@janko)

    • 🚚 backgrounding – Remove Attacher.promote, Attacher.delete, Attacher.dump, Attacher#dump, Attacher.load, Attacher.load_record (@janko)

    • model – Allow disabling caching to temporary storage on assignment (@janko)

    • model – Add Attacher.from_model, Attacher#write (@janko)

    • 🔌 model – Add new plugin for integrating with mutable structs (@janko)

    • entity – Add Attacher.from_entity, Attacher#reload, Attacher#column_values, Attacher#attribute (@janko)

    • 🔌 entity – Add new plugin for integrating with immutable structs (@janko)

    • 0️⃣ column – Allow changing column serializer from default JSON library (@janko)

    • column – Add Attacher#column_data and Attacher.from_column methods (@janko)

    • 🔌 column – Add new plugin for (de)serializing attacher data (@janko)

    • 🚚 attachment – Removed any default attachment methods (@janko)

    • core – Require context hash passed as second argument to Shrine#upload to have symbol keys (@janko)

    • core – Change Shrine.uploaded_file not to yield files anymore (@janko)

    • core – Allow Shrine.uploaded_file to accept file data hashes with symbol keys (@janko)

    • 🚚 core – Remove Shrine#uploaded?

    • 🚚 core – Remove Shrine#delete, Shrine#_delete, Shrine#remove (@janko)

    • 🚚 core – Remove Shrine#store, Shrine#_store, Shrine#put, Shrine#copy (@janko)

    • 🚚 core – Remove Shrine#processed, Shrine#process (@janko)

    • core – Don't pass :phase anymore on uploads (@janko)

    • core – Read attachment from the record attribute only on initialization (@janko)

    • core – Don't require a temporary storage (@janko)

    • core – Add Attacher#data and Attacher.from_data for dumping to and loading from a Hash (@janko)

    • 👻 core – Change Attacher#assign to raise exception when non-cached file is assigned (@janko)

    • core – Enable Attacher#assign to accept cached file data as a Hash (@janko)

    • core – Add Attacher#file alias for Attacher#get (@janko)

    • core – Change Attacher#attached? to return whether a file is attached (@janko)

    • core – Change Attacher#promote to always only save promoted file in memory (@janko)

    • core – Rename Attacher#replace to Attacher#destroy_previous (@janko)

    • core – Remove Attacher#_promote and Attacher#_delete, add Attacher#promote_cached and Attacher#destroy_attached (@janko)

    • core – Rename Attacher#set and Attacher#_set to Attacher#change and Attacher#set (@janko)

    • 🚚 core – Remove Attacher#cache! and Attacher#store!, add Attacher#upload (@janko)

    • core – Rename Attacher#validate_block to Attacher#_validate (@janko)

    • core – Add Attacher#attach, Attacher#attach_cached, extracted from Attacher#assign (@janko)

    • core – Remove Attacher#swap, Attacher#update, Attacher#read, Attacher#write, Attacher#data_attribute, Attacher#convert_to_data, Attacher#convert_before_write, and Attacher#convert_after_read (@janko)

    • core – Change Attacher.new to not accept a model anymore (@janko)

    • 🚚 delete_promoted – Remove plugin (@janko)

    • 🚚 parsed_json – Remove plugin (@janko)

    • 🚚 parallelize – Remove plugin (@janko)

    • 🚚 hooks – Remove plugin (@janko)

    • 🚚 core – Remove deprecated Shrine::IO_METHODS constant (@janko)

    • 📇 s3 – Replace source object metadata when copying a file from S3 (@janko)

    • core – Change UploadedFile#storage_key to return a Symbol instead of a String (@janko)

    • infer_extension – Make :mini_mime the default analyzer (@janko)

    • 💎 Bring back Ruby 2.3 support (@janko)

    • versions – Remove deprecated :version_names, Shrine.version_names and Shrine.version? (@janko)

    • 🚚 validation_helpers – Remove support for regexes in MIME type or extension validations (@janko)

    • validation_helpers – Don't require #width and #height methods to be defined on UploadedFile (@janko)

    • 📇 validation_helpers – Fail dimensions validations when width or height metadata is missing (@janko)

    • 🚚 upload_endpoint – Remove deprecated Shrine::Plugins::UploadEndpoint::App constant (@janko)

    • determine_mime_type – Remove Shrine#mime_type_analyzers method (@janko)

    • 🚚 store_dimensions – Remove Shrine#extract_dimensions and Shrine#dimensions_analyzers methods (@janko)

    • 🚚 rack_file – Remove deprecated Shrine::Plugins::RackFile::UploadedFile constant (@janko)

    • 👍 rack_file – Drop support for passing file hash to Shrine#upload and Shrine#store (@janko)

    • 🚚 download_endpoint – Move Shrine::Plugins::DownloadEndpoint::App into Shrine::DownloadEndpoint (@janko)

    • 🚚 download_endpoint – Remove deprecated Shrine::DownloadEndpoint constant (@janko)

    • 🚚 download_endpoint – Remove deprecated :storages option (@janko)

    • determine_mime_type – Remove deprecated :default analyzer alias (@janko)

    • 🚚 default_url – Remove deprecated block argument when loading the plugin (@janko)

    • 🚚 data_uri – Remove deprecated Shrine::Plugins::DataUri::DataFile constant (@janko)

    • 🚚 data_uri – Remove deprecated :filename plugin option (@janko)

    • cached_attachment_data – Remove deprecated model setter (@janko)

    • 🚚 file_system – Remove deprecated :older_than option in FileSystem#clear! (@janko)

    • file_system – Don't accept a block anymore in FileSystem#open (@janko)

    • 🚚 file_system – Remove deprecated FileSystem#download method (@janko)

    • 🚚 file_system – Make FileSystem#movable? and FileSystem#move methods private (@janko)

    • 🚚 file_system – Remove deprecation warning on unrecognized options in FileSystem#upload (@janko)

    • 🚚 file_system – Remove deprecated :host option for FileSystem#initialize (@janko)

    • 🚚 moving – Remove deprecated plugin (@janko)

    • 🚚 multi_delete – Remove deprecated plugin (@janko)

    • 🚚 direct_upload – Remove deprecated plugin (@janko)

    • 🚚 backup – Remove deprecated plugin (@janko)

    • 🚚 background_helpers – Remove deprecated plugin (@janko)

    • 🚚 migration_helpers – Remove deprecated plugin (@janko)

    • 🚚 copy – Remove deprecated plugin (@janko)

    • 🚚 logging – Remove deprecated plugin (@janko)

    • 🚚 s3 – Remove deprecated S3#download method (@janko)

    • 🚚 s3 – Remove deprecated S3#stream method (@janko)

    • 👍 presign_endpoint – Drop support for presign objects that don't respond to #to_h (@janko)

    • s3 – Return a Hash in S3#presign when method is POST (@janko)

    • 🚚 s3 – Remove :download option in S3#url (@janko)

    • 🚚 s3 – Remove support for non URI-escaped content disposition values (@janko)

    • 🚚 s3 – Remove S3#s3 method (@janko)

    • 🚚 s3 – Remove support for specifying :multipart_threshold as an integer (@janko)

    • 🚚 s3 – Remove :host option on S3#initialize (@janko)

    • 👍 s3 – Drop support for aws-sdk-s3 versions lower than 1.14 (@janko)

    • 👍 s3 – Drop support for aws-sdk 2.x (@janko)

  • v3.0.0.rc

    September 28, 2019
  • v3.0.0.beta3

    September 25, 2019