-
derivation_endpoint– Add:upload_open_optionsfor download option for derivation result (@janko) -
derivation_endpoint– Fix:uploadoption being incompatible withdelete_rawplugin (@janko) -
derivation_endpoint– Require input file inDerivation#uploadto respond to#path(@janko) -
derivation_endpoint– Delete generated derivation result after uploading inDerivation#upload(@janko) -
derivation_endpoint– FixDerivation#processedbreaking when derivation result is aFileobject (@janko) -
derivation_endpoint– Don't close input file onDerivation#upload(@janko) -
Add
:deleteparameter for skipping delete whendelete_rawplugin is loaded (@janko) -
Don't return
Content-Typewhen it couldn't be determined from file extension inderivation_endpoint(@janko) -
Add
:download_optionsoption todownload_endpointplugin for specifying options forStorage#open(@janko) -
Don't return
Content-Typeheader inrack_responsewhen MIME type could not be determined (@janko) -
Open the
UploadedFileobject in#to_rack_responseinrack_responseplugin (@janko) -
Fix
store_dimensionsplugin making second argument inShrine#extract_metadatamandatory (@jrochkind)
-
Add
derivation_endpointplugin for processing uploaded files on-the-fly (@janko) -
Allow Marcel to fall back to the file extension in
determine_mime_typeplugin (@skarlcf) -
Don't return cached app instance in
Shrine.download_endpointindownload_endpointplugin (@janko) -
Yield a new File object on
Shrine.with_filewhentempfileplugin is loaded (@janko)
-
Add
tempfileplugin for easier reusing of the same uploaded file copy on disk (@janko) -
Don't re-open the uploaded file if it's already open in
refresh_metadataplugin (@janko) -
Drop support for MRI 2.1 and 2.2 (@janko)
-
Fix
backgroundingnot working when default storage was changed withAttachment.new(@janko) -
Don't clear existing metadata definitions when loading
add_metadataplugin (@janko) -
Don't clear existing processing blocks when loading
processingplugin (@janko) -
Deprecate automatic escaping of
:content_dispositioninShrine::Storage::S3(@janko) -
Use
content_dispositiongem inShrine::Storage::S3andrack_responseplugin (@janko) -
Make
FileSystem#clear!work correctly when the storage directory is a symlink (@janko) -
Don't abort promotion in
backgroundingplugin when original metadata was updated (@janko) -
Don't mutate the
UploadedFiledata hash inrefresh_metadataplugin (@janko) -
Deprecate
Storage::S3#download(@janko) -
Stop using
Storage#downloadinUploadedFile#downloadfor peformance (@janko) -
Remove
#downloadfrom the Shrine storage specification (@janko) -
Keep
contextargument in#extract_metadataoptional after loadingadd_metadataplugin (@janko) -
Include metadata key with
nilvalue whennilis returned inadd_metadatablock (@janko) -
Strip query params in upload location when re-uploading from
shrine-urlstorage (@jrochkind) -
Inline Base plugin into core classes, extract them to separate files (@printercu)
-
Make
rack_responseplugin work withRack::SendfileforFileSystemstorage (@janko) -
Add
:filenameand:typeoptions torack_responseplugin (@janko) -
Add
:hostoption toUploadedFile#download_urlindownload_endpointplugin (@janko) -
Add support for client-side encryption to S3 storage (@janko)
-
Don't look up the attachment class in each new model instance (@printercu)
-
Allow
Attacher#cached?andAttacher#stored?to take anUploadedFileobject (@jrochkind) -
Allow assigning a filename to the
DataFileobject inShrine.data_uri(@janko) -
Don't strip media type parameters for the
DataFileobject indata_uriplugin (@janko) -
Add
:content_typeanalyzer toShrine.mime_type_analyzersindetermine_mime_typeplugin (@janko) -
Rename
:defaultanalyzer to:content_typeindetermine_mime_typeplugin (@janko) -
Don't display a warning when
determine_mime_typeplugin is loaded with:defaultanalyzer (@janko) -
Exclude media type parameters when copying
IO#content_typeintomime_typemetadata (@janko) -
Remove superfluous
#head_objectS3 API call inS3#download(@janko) -
Make
S3#downloadandS3#openwork with server side encryption options (@janko) -
Make previously extracted metadata available under
:metadatainadd_metadataplugin (@jrochkind) -
Use a guard raise cause for
bucketargument in S3 for an appropriate error message (@ardecvz)
-
Specify UTF-8 charset in
Content-Typeresponse header inpresign_endpointplugin (@janko) -
Specify UTF-8 charset in
Content-Typeresponse header inupload_endpointplugin (@janko) -
Force UTF-8 encoding on filenames coming from Rack's multipart request params in
rack_fileplugin (@janko) -
Raise
Shrine::Erroriffilecommand returns error in stdout indetermine_mime_typeplugin (@janko) -
Allow
:hostinS3#urlto specify a host URL with an additional path prefix (@janko) -
Revert adding bucket name to URL path in
S3#urlwhen:hostis used with:force_path_style(@janko) -
In
upload_endpointerror with "Upload Not Valid" whenfileparameter is present but not a file (@janko) -
Allow
Attacher#assignto accept options forShrine#upload(@janko) -
Add
:metadataoption toShrine#uploadfor manually overriding extracted metadata (@janko) -
Add
:forceoption toinfer_extensionplugin for always replacing the current extension (@jrochkind) -
Add
:publicoption toS3#initializefor enabling public uploads (@janko) -
Add ability to specify a custom
:signerforShrine::Storage::S3#url(@janko) -
In
S3#uploaddo multipart upload for large non-file IO objects (@janko) -
In
S3#uploadswitch toAws::S3::Object#upload_streamfor multipart uploads of IO objects of unknown size (@janko) -
In
S3#uploaddeprecate using aws-sdk-s3 lower than 1.14 when uploading IO objects of unknown size (@janko)
-
Ignore nil values when assigning files from a remote URL (@janko)
-
Ignore nil values when assigning files from a data URI (@GeekOnCoffee)
-
Raise
Shrine::Errorwhen child process failed to be spawned in:fileMIME type analyzer (@hmistry) -
Use the appropriate unit in error messages of filesize validators in
validation_helpersplugin (@hmistry) -
Fix subclassing not inheriting storage resolvers from superclass in
dynamic_storageplugin (@janko) -
Un-deprecate assigning cached versions (@janko)
-
Add
Attacher#assign_remote_urlwhich allows dynamically passing downloader options (@janko) -
Deprecate
:storagesoption indownload_endpointplugin in favour ofUploadedFile#download_url(@janko) -
Add
:redirectoption todownload_endpointplugin for redirecting to the uploaded file (@janko) -
Fix encoding issues when uploading IO object with unknown size to S3 (@janko)
-
Accept additional
File.openarguments inFileSystem#open(@janko) -
Add
:rewindableoption toS3#openfor disabling caching of read content to disk (@janko) -
Make
UploadedFile#openalways open a new IO object and close the previous one (@janko)
-
Add
Shrine.with_filefor temporarily converting an IO-like object into a file (@janko) -
Add
:methodvalue to theS3#presignresult indicating the HTTP verb that should be used (@janko) -
Add ability to specify
method: :putinS3#presignto generate data for PUT upload (@janko) -
Return a
Structinstead of aAws::S3::PresignedPostobject inS3#presign(@janko) -
Deprecate
Storage#presignreturning a custom object inpresign_endpoint(@janko) -
Allow
Storage#presignto return a Hash inpresign_endpoint(@janko) -
Add ability to specify upload checksum in
upload_endpointplugin (@janko) -
Don't raise exception in
:mini_magickand:ruby_vipsdimensions analyzers when image is invalid (@janko) -
Don't remove bucket name from S3 URL path with
:hostwhen:force_path_styleis set (@janko) -
Correctly determine MIME type from extension of empty files (@janko)
-
Modify
UploadedFile#downloadnot to reopen the uploaded file if it's already open (@janko) -
Add
UploadedFile#streamfor streaming content into a writable object (@janko) -
Deprecate
direct_uploadplugin in favor ofupload_endpointandpresign_endpointplugins (@janko)
-
Add
:fastimageanalyzer todetermine_mime_typeplugin (@mokolabs) -
Keep download endpoint URL the same regardless of metadata ordering (@MSchmidt)
-
Remove
:rack_mimeextension inferrer from theinfer_extensionplugin (@janko) -
Allow
UploadedFile#downloadto accept a block for temporary file download (@janko) -
Add
:ruby_vipsanalyzer tostore_dimensionsplugin (@janko) -
Add
:mini_magickanalyzer tostore_dimensionsplugin (@janko) -
Soft-rename
:herokulogging format to:logfmt(@janko) -
Deprecate
Shrine::IO_METHODSconstant (@janko) -
Don't require IO size to be known on upload (@janko)
-
Inherit the logger on subclassing
Shrineand make it shared across subclasses (@hmistry)
-
Support arrays of files in
versionsplugin (@janko) -
Added
:marcelanalyzer todetermine_mime_typeplugin (@janko) -
Deprecate
:filenameoption of thedata_uriplugin in favour of the newinfer_extensionplugin (@janko) -
Add
infer_extensionplugin for automatically deducing upload location extension from MIME type (@janko) -
Apply default storage options passed via
Attachment.newinbackgroundingplugin (@janko) -
Fix S3 storage replacing spaces in filename with "+" symbols (@ndbroadbent)
-
Deprecate the
multi_deleteplugin (@janko) -
Allow calling
UploadedFile#openwithout passing a block (@hmistry) -
Delete tempfiles in case of errors in
UploadedFile#downloadandStorage::S3#download(@hmistry) -
Freeze all string literals (@hmistry)
-
Allow passing options to
Model#<attachment>_attacherfor overridingAttacheroptions (@janko)
-
Expand relative directory paths when initializing
Storage::FileSystem(@janko) -
Fix
loggingplugin erroring on:jsonformat when ActiveSupport is loaded (@janko) -
Allow
Storage::S3#clear!to take a block for specifying which objects to delete (@janko) -
Make
:filemagicanalyzer close the FileMagic descriptor even in case of exceptions (@janko) -
Make
:fileanalyzer work for potential file types which have magic bytes farther than 256 KB (@janko) -
Deprecate
aws-sdk2.x in favour of the newaws-sdk-s3gem (@janko) -
Modify
UploadedFile#extensionto 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_attributesplugin (@janko) -
Allow specifying metadata mappings on
metadata_attributesplugin initialization (@janko) -
Add support for ranged requests in
download_endpointandrack_responseplugins (@janko) -
Allow
Storage::S3#openandStorage::S3#downloadto accept additional options (@janko) -
Forward any options given to
UploadedFile#openorUploadedFile#downloadto the storage (@janko) -
Update
direct_uploadplugin to support Roda 3 (@janko)
-
Deprecate the
Shrine::DownloadEndpointconstant overShrine.download_endpoint(@janko) -
Allow an additional
#headersattribute on presigns and return it inpresign_endpoint(@janko) -
Allow overriding
upload_endpointandpresign_endpointoptions per-endpoint (@janko) -
Add
:presignand:rack_responseoptions topresign_endpoint(@janko) -
Add
:upload,:upload_contextand:rack_responseoptions toupload_endpoint(@janko) -
Modify
upload_endpointandpresign_endpointto returntext/plainerror responses (@janko) -
Add
:requestupload context parameter inupload_endpoint(@janko) -
Change
:actionupload context parameter to:uploadinupload_endpoint(@janko) -
Return
405 Method Not Allowedon invalid HTTP verb inupload_endpointandpresign_endpoint(@janko) -
Modify
upload_endpointandpresign_endpointto handle requests on the root URL (@janko) -
Allow creating Rack apps dynamically in
upload_endpointandpresign_endpoint(@janko) -
Remove Roda dependency from
upload_endpointandpresign_endpointplugins (@janko) -
Split
direct_uploadplugin intoupload_endpointandpresign_endpointplugins (@janko) -
Support the new
aws-sdk-s3gem inShrine::Storage::S3(@lizdeika) -
Return
Cache-Controlheader indownload_endpointto permanently cache responses (@janko) -
Return
404 Not Foundwhen uploaded file doesn't exist indownload_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
fileandfilemagicMIME type analyzer on empty IO (@ypresto) -
Require
downinremote_urlplugin even when a custom downloader is given (@janko) -
Require
timelibrary inloggingplugin to fixundefined 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
Attacher.newoptions likestore:andcache:viaAttachment.new(@ypresto) -
Raise
ArgumentErrorwhen:bucketoption is nil inShrine::Storage::S3#initialize(@janko) -
Don't wrap base64-encoded content into 60 columns in
UploadedFile#base64and#data_uri(@janko) -
Add
:mini_mimeoption todetermine_mime_typeplugin for using the mini_mime gem (@janko) -
Fix
data_uriplugin raising an exception on Ruby 2.4.1 when using raw data URIs (@janko) -
Implement
Shrine::Storage::S3#openusing the aws-sdk gem instead ofDown.open(@janko) -
Un-deprecate
Shrine.uploaded_fileaccepting 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)
- Fix
download_endpointreturning incorrect reponse body in some cases (@janko)
-
Make
Shrine::Storage::FileSystem#pathpublic which returns path to the file as aPathnameobject (@janko) -
Add
Shrine.rack_filetorack_fileplugin for converting Rack uploaded file hash into an IO (@janko) -
Deprecate passing a Rack file hash to
Shrine#upload(@janko) -
Expose
Shrine.extract_dimensionsandShrine.dimensions_analyzersinstore_dimensionsplugin (@janko) -
Add
metadata_attributesplugin for syncing attachment metadata with additional record attributes (@janko) -
Remove the undocumented
:magic_headeroption fromdetermine_mime_typeplugin (@janko) -
Expose
Shrine.determine_mime_typeandShrine.mime_type_analyzersindetermine_mime_typeplugin (@janko) -
Add
signatureplugin 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_metadatablock (@janko) -
Add
refresh_metadataplugin 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_uriandUploadedFile#base64by at least 2x (@janko) -
Add
Shrine.data_uritodata_uriplugin which parses and converts the given data URI to an IO object (@janko) -
Make
rack_fileplugin work with HashWithIndifferentAccess-like objects such as Hashie::Mash (@janko) -
Expose
Aws::S3::ClientviaShrine::Storage::S3#client, and deprecateShrine::Strorage::S3#s3(@janko) -
Modify
delete_rawplugin 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) -
Don't include list of blacklisted types and extensions in default
validation_helpersmessages (@janko) -
Improve default error messages in
validation_helpersplugin (@janko) -
Don't require the
benchmarkstandard library inloggingplugin (@janko) -
Don't dirty the attacher in
Attacher#setwhen attachment hasn't changed (@janko) -
Rename
Attacher#attached?to a more accurateAttacher#changed?(@janko) -
Allow calling
Attacher#finalizeif attachment hasn't changed, instead of raising an error (@janko) -
Make
Shrine::Storage::S3#objectmethod public (@janko) -
Prevent autoloading race conditions in aws-sdk gem by eager loading the S3 service (@janko)
-
Raise
Shrine::ErrorwhenShrine#generate_locationreturns nil (@janko)
-
Add
Attacher.default_urlas the idiomatic way of declaring default URLs (@janko) -
Allow uploaders themselves to accept Rack uploaded files when
rack_fileis loaded (@janko) -
Raise a descriptive error when two versions are pointing to the same IO object (@janko)
-
Make
backgroundingplugin work with plain model instances (@janko) -
Make validation methods in
validation_helpersplugin return whether validation succeeded (@janko) -
Make extension matching case insensitive in
validation_helpersplugin (@jonasheinrich) -
Make
remove_invalidplugin remove dirty state on attacher after removing invalid file (@janko) -
Raise error if
Shrine::UploadedFileisn't initialized with valid data (@janko) -
Accept
extensionparameter without the dot in presign endpoint ofdirect_uploadplugin (@jonasheinrich) -
Add
:fallback_to_originaloption toversionsplugin for disabling fallback to original file (@janko) -
Add
#dimensionsmethod toUploadedFilewhen loadingstore_dimensionsplugin (@janko) -
Make it possible to extract multiple metadata values at once with the
add_metadataplugin (@janko)
-
Move back JSON serialization from
Attacher#writetoAttacher#_set(@janko) -
Make
remove_invalidplugin assign back a previous attachment if was there (@janko) -
Deprecate
Storage::FileSystem#download(@janko) -
In
UploadedFile#downloaduse extension from#original_filenameif#iddoesn't have it (@janko)
-
Add
#convert_before_writeand#convert_after_readon the Attacher for data attribute conversion (@janko) -
Extract the
<attachment>_dataattribute name intoAttacher#data_attribute(@janko) -
Support JSON and JSONB PostgreSQL columns with ActiveRecord (@janko)
-
Fix S3 storage not handling filenames with double quotes in Content-Disposition header (@janko)
-
Work around aws-sdk failing with non-ASCII characters in Content-Disposition header (@janko)
-
Allow dynamically generating URL options in
default_url_optionsplugin (@janko) -
Don't run file validations when duplicating the record in
copyplugin (@janko) -
Don't use
Storage#streamin download_endpoint plugin anymore, rely onStorage#open(@janko) -
Remove explicitly unlinking Tempfiles returned by
Storage#open(@janko) -
Move
:hostfrom first-class storage option to#urloption on FileSystem and S3 storage (@janko) -
Don't fail in FileSystem storage when attempting to delete a file that doesn't exist (@janko)
-
In
UploadedFile#openhandle the case whenStorage#openraises an error (@janko) -
Make the
sequelplugin use less memory during transactions (@janko) -
Use Roda's streaming plugin in
download_endpointfor better EventMachine integration (@janko) -
Deprecate accepting a JSON string in
Shrine.uploaded_file(@janko) -
In S3 storage automatically write original filename to
Content-Dispositionheader (@janko) -
Override
#to_sinShrine::Attachmentfor better introspection withputs(@janko)
- Don't change permissions of existing directories in FileSystem storage (@janko)
-
Prevent client from caching the presign response in direct_upload plugin (@janko)
-
Make Sequel update only the attachment in background job (@janko)
-
Add copy plugin for copying files from one record to another (@janko)
-
Disable moving when uploading stored file to backup storage (@janko)
-
Make
Attacher#recachefrom the recache plugin public for standalone usage (@janko) -
Allow changing
Shrine::Attacher#contextonce the attacher is instantiated (@janko) -
Make
Attacher#readfor reading the attachment column public (@janko) -
Don't rely on the
#idwriter on a model instance in backgrounding plugin (@janko) -
Don't make
Attacher#swapprivate in sequel and activerecord plugins (@janko) -
Set default UNIX permissions to 0644 for files and 0755 for directories (@janko)
-
Apply directory permissions to all subfolders inside the main folder (@janko)
-
Add
:directory_permissionstoStorage::FileSystem(@janko)
-
Soft deprecate
:phaseover:actionincontext(@janko) -
Add ability to sequel and activerecord plugins to disable callbacks and validations (@janko)
-
The direct_upload endpoint now always includes both upload and presign routes (@janko)
-
Don't let the combination for delete_raw and moving plugins trigger any errors (@janko)
-
Add
UploadedFile#openthat mimicsFile.openwith a block (@janko) -
In the storage linter don't require
#clear!to be implemented (@janko) -
In backgrounding plugin don't require model to have attachment module included (@janko)
-
Add add_metadata plugin for defining additional metadata values to be extracted (@janko)
-
In determine_mime_type plugin raise error when file command wasn't found or errored (@janko)
-
Add processing plugin for simpler and more declarative definition of processing (@janko)
-
Storage classes don't need to implement the
#readmethod anymore (@janko) -
Use aws-sdk in
S3#download, which will automatically retry failed downloads (@janko) -
Add
:multipart_thresholdfor when S3 storage should use parallelized multipart copy/upload (@janko) -
Automatically use optimized multipart S3 upload for files larger than 15MB (@janko)
-
Avoid an additional HEAD request to determine content length in multipart S3 copy (@janko)
- Fix
S3#openthrowing a NameError ifnet/httpisn't required (@janko)
-
Remove
:namesfrom versions plugin, and deprecate generating versions in :cache phase (@janko) -
Pass a
Shrine::UploadedFilein restore_cached_data instead of the raw IO (@janko) -
Increase magic header length in determine_mime_type and make it configurable (@janko)
-
Execute
filecommand in determine_mime_type the same way for files as for general IOs (@janko) -
Make logging and parallelize plugins work properly when loaded in this order (@janko)
-
Don't assert arity of IO methods, so that objects like
Rack::Test::UploadedFileare allowed (@janko) -
Deprecate
#cached_<attachment>_data=over using<attachment>for the hidden field (@janko)
- Don't override previously set default_url in versions plugin (@janko)
-
Include query parameters in CDN-ed S3 URLs, making them work for private objects (@janko)
-
Remove the
:include_erroroption from remote_url plugin (@janko) -
Make previous plugin options persist when reapplying the plugin (@janko)
-
Improve how upload options and metadata are passed to storage's
#uploadand#move(@janko) -
Remove
Shrine::Confirmand confirmingStorage#clear!in general (@janko) -
Allow implementing a custom dimensions analyzer using built-in ones (@janko)
-
Don't error in determine_mime_type when MimeMagic cannot determine the MIME (@janko)
-
Allow implementing a custom MIME type analyzer using built-in ones (@janko)
-
Don't check that the cached file exists in restore_cached_data plugin (@janko)
-
Deprecate migration_helpers plugin and move
Attacher#cached?andAttacher#stored?to base (@janko) -
Don't trigger restore_cached_data plugin functionality when assigning the same cached attachment (@janko)
-
Give
Attacher#_promoteandAttacher#promotethe same method signature (@janko) -
Add
Attacher#_deletewhich now spawns a background job instead ofAttacher#delete!(@janko) -
Make
Attacher#cache!,Attacher#store!, andAttacher#delete!public (@janko) -
Don't cache storages in dynamic_storage plugin (@janko)
-
Make only one HTTP request in download_endpoint plugin (@janko)
-
Print secuity warning when not using determine_mime_type plugin (@janko)
-
Support Mongoid in backgrounding plugin (@janko)
-
Allow including attachment module to non-
Sequel::Modelobjects in sequel plugin (@janko) -
Handle paths that start with "-" in determine_mime_type plugin when
:fileanalyzer is used (@zaeleus) -
Allow including attachment module to non-
ActiveRecord::Baseobjects in activerecord plugin (@janko) -
Remove deprecated "restore_cached" alias for restore_cached_data plugin (@janko)
-
Remove deprecated "delete_uploaded" alias for delete_raw plugin (@janko)
-
Make the default generated unique location shorter (@janko)
-
Make the
:delegateoption in migration_helpers default tofalse(@janko) -
Don't require
:storagesoption anymore in moving plugin (@janko) -
Don't delete uploaded IO if storage doesn't support moving in moving plugin (@janko)
-
Rename delete phases to be shorter and consistent in naming with upload phases (@janko)
-
Remove deprecated
Shrine#default_url(@janko) -
Remove deprecated
:subdirectoryon FileSystem storage (@janko) -
Don't return the uploaded file in
Attacher#setandAttacher#assign(@janko) -
Return the attacher instance in
Attacher.promoteandAttacher.deletein backgrounding plugin (@janko) -
Rename "attachment" to "name", and "uploaded_file" to "attachment" in backgrounding plugin (@janko)
-
Remove using
:presignfor presign options instead of:presign_options(@janko) -
Remove deprecated
Shrine.direct_endpointfrom direct_upload plugin (@janko) -
Remove deprecated keep_location plugin (@janko)
-
Make
Shrine#extract_dimensionsa private method in store_dimensions plugin (@janko) -
Keep
Shrine#extract_mime_typea private method when loading determine_mime_type plugin (@janko) -
Deprecate loading the backgrounding plugin through the old "background_helpers" alias (@janko)
-
Removed ActiveRecord's automatic support for optimistic locking as it wasn't stable (@janko)
-
Fixed record's dataset being modified after promoting preventing further updates with the same instance (@janko)
- Bring back triggering callbacks on promote in ORM plugins, and add support for optimistic locking (@janko)
-
Return "Content-Length" response header in download_endpoint plugin (@janko)
-
Make determine_mime_type and store_dimensions automatically rewind IO with custom analyzer (@janko)
-
Make
before_*andafter_*hooks happen before and afteraround_*hooks (@janko) -
Rename restore_cached plugin to more accurate "restore_cached_data" (@janko)
-
Prevent errors when attempting to validate dimensions when they are absent (@janko)
-
Remove "thread" gem dependency in parallelize plugin (@janko)
-
Add
:filenameto data_uri plugin for generating filenames based on content type (@janko) -
Make user-defined hooks always happen around logging (@janko)
-
Add
:presign_locationto direct_upload for generating the key (@janko) -
Add separate
:presign_optionsoption for receiving presign options in direct_upload plugin (@janko) -
Add ability to generate fake presigns for storages which don't support them for testing (@janko)
-
Change the
/:storage/:nameroute to/:storage/uploadin direct_upload plugin (@janko) -
Fix logger not being inherited in the logging plugin (@janko)
-
Add delete_promoted plugin for deleting promoted files after record has been updated (@janko)
-
Allow passing phase to
Attacher#promoteand generalize promoting background job (@janko) -
Close the cached file after extracting its metadata in restore_cached plugin (@janko)
-
Rename delete_uploaded plugin to "delete_raw" to better explain its functionality (@janko)
-
Pass the SSL CA bundle to open-uri when downloading an S3 file (@janko)
-
Add
Attacher.dumpandAttacher.loadfor writing custom background jobs with custom functionality (@janko) -
Fix S3 URL erroring due to not being URL-encoded when
:hostoption is used (@janko) -
Remove a tiny possibility of a race condition with backgrounding on subsequent updates (@janko)
-
Add
:delegateoption to migration_helpers for opting out of defining methods on the model (@janko) -
Make logging plugin log number of both input and output files for processing (@janko)
-
Make deleting backup work with backgrounding plugin (@janko)
-
Make storing backup happen after promoting instead of before (@janko)
-
Add
:fallbacksto versions plugin for fallback URLs for versions which haven't finished processing (@janko) -
Fix keep_files not to spawn a background job when file will not be deleted (@janko)
-
Add
<attachment>_cached?and<attachment>_stored?to migration_helpers plugin (@janko) -
Fix
Attacher#backup_filefrom backup plugin not to modify the given uploaded file (@janko) -
Allow modifying UploadedFile's data hash after it's instantiated to change the UploadedFile (@janko)
-
Deprecate the keep_location plugin (@janko)
-
Don't mutate context hash inside the uploader (@janko)
-
Make extracted metadata accessible in
#generate_locationthrough:metadatain context hash (@janko) -
Don't require the "metadata" key when instantiating a
Shrine::UploadedFile(@janko) -
Add
:include_erroroption to remote_url for accessing download error in:error_messageblock (@janko) -
Give different error message when file wasn't found or was too large in remote_url (@janko)
-
Rewind the IO after extracting MIME type with MimeMagic (@janko)
-
Rewind the IO after extracting image dimensions even when extraction failed (@kaapa)
-
Correctly infer the extension in
#generate_locationwhen uploading anUploadedFile(@janko) -
Fix ability for errors to accumulate in data_uri and remote_url plugins when assigning mutliples to same record instance (@janko)
-
Bump Down dependency to 2.0.0 in order to fix downloading URLs with "[]" characters (@janko)
-
Add
:namespaceoption to pretty_location for including class namespace in location (@janko) -
Don't include the namespace of the class in the location with the pretty_location plugin (@janko)
-
Remove aws-sdk deprecation warning when storage isn't instantiated with credentials (@reidab)
-
Don't make uploaded file's metadata methods error when the corresponding key-value pair is missing (@janko)
-
Close the
UploadedFileon upload only if it was previously opened, which doesn't happen on S3 COPY (@reidab) -
Fix
NameErrorwhen silencing "missing record" errors in backgrounding (@janko)
-
Make
Shrine::Attacher.promoteandShrine::Attacher.deletereturn the record in backgrounding plugin (@janko) -
Close the IO on upload even if the upload errors (@janko)
-
Use a transaction when checking if attachment has changed after storing during promotion (@janko)
-
Don't attempt to start promoting in background if attachment has already changed (@janko)
-
Don't error in backgrounding when record is missing (@janko)
-
Prevent multiline content type spoof attempts in validation_helpers (@xzo)
-
Make custom metadata inherited from uploaded files and make
#extract_metadatacalled only on caching (@janko)
-
Rename the "background_helpers" plugin to "backgrounding" (@janko)
-
Rename the
:subdirectoryoption to:prefixon FileSystem storage (@janko) -
Add download_endpoint plugin for downloading files uploaded to database storages and for securing downloads (@janko)
-
Make
around_*hooks return the result of the corresponding action (@janko) -
Make the direct upload endpoint customizable, inheritable and inspectable (@janko)
-
Add upload_options plugin for dynamically generating storage-specific upload options (@janko)
-
Allow the context hash to be modified (@janko)
-
Fix extension not being returned for storages which remove it from ID (Flickr, SQL, GridFS) (@janko)
-
Delete underlying Tempfiles when closing an
UploadedFile(@janko) -
Fix background_helpers plugin not working with ActiveJob (@janko)
-
Add
UploadedFile#base64to the data_uri plugin (@janko) -
Optimize
UploadedData#data_urito not download the file and instantiate file contents string only once (@janko) -
Allow adding S3 upload options dynamically per upload (@janko)
-
Add delete_uploaded plugin for automatically deleting files after they're uploaded (@janko)
-
Close an open file descriptor left after downloading a FileSystem file (@janko)
-
Make
FileSystem#urlWindows compatible (@janko) -
Add
UploadedFile#content_typealias to#mime_typefor better integration with upload libraries (@janko) -
Add a
UploadedFile#data_urimethod to the data_uri plugin (@janko) -
Allow the data_uri plugin to accept "+" symbols in MIME type names (@janko)
-
Make the data_uri plugin accept data URIs which aren't base64 encoded (@janko)
-
Close all IOs after uploading them (@janko)
-
Allow passing a custom IO object to the Linter (@janko)
-
Add remove_invalid plugin for automatically deleting and deassigning invalid cached files (@janko)
-
Add
:max_sizeoption to the direct_upload plugin (@janko) -
Move
Shrine#default_urlto default_url plugin (@janko) -
Enable
S3#multi_deleteto delete more than 1000 objects by batching deletes (@janko) -
Add the keep_location plugin for easier debugging or backups (@janko)
-
Add the backup plugin for backing up stored files (@janko)
-
Storages don't need to rewind the files after upload anymore (@janko)
-
Make S3 presigns work when the
:endpointoption is given (@NetsoftHoldings) -
Fix parallelize plugin to always work with the moving plugin (@janko)
-
Fix S3 storage to handle copying files that are larger than 5GB (@janko)
-
Add
:upload_optionsto S3 storage for applying additional options on upload (@janko) -
Reduce length of URLs generated with pretty_location plugin (@gshaw)
-
Improve Windows compatibility in the FileSystem storage (@janko)
-
Remove the ability for FileSystem storage to accept IDs starting with a slash (@janko)
-
Fix keep_files plugin requiring context for deleting files (@janko)
-
Extract assigning cached files by parsed JSON into a parsed_json plugin (@janko)
-
Add
(before|around|after)_uploadto the hooks plugin (@janko) -
Fix
S3#multi_deleteandS3#clear!not using the prefix (@janko) -
Add ability to pass presign options to storages in the direct_upload plugin (@janko)
-
Remove
Shrine.io!because it was actually meant to be only for internal use (@janko) -
Remove
Shrine.deletebecause of redundancy (@janko) -
Add default_url_options plugin for specifiying default URL options for uploaded files (@janko)
-
Add module_include plugin for easily extending core classes for given uploader (@janko)
-
Add support for Sequel's Postgres JSON column support (@janko)
-
Fix migration_helpers plugin not detecting when column changed (@janko)
-
Add the
:publicoption to S3 storage for retrieving public URLs which aren't signed (@janko) -
Remove the delete_invalid plugin, as it could cause lame errors (@janko)
-
Don't delete cached files anymore, as it can cause errors with backgrounding (@janko)
-
Add a
:hostoption to the S3 storage for specifying CDNs (@janko) -
Don't allow same attachment to be promoted multiple times with backgrounding (@janko)
-
Fix recache plugin causing an infinite loop (@janko)
-
Fix an encoding error in determine_mime_type when using
:filewith non-files (@janko) -
Make
UploadedFileactually delete itself only once (@janko) -
Make
UploadedFile#inspectcleaner by showing only the data hash (@janko) -
Make determine_mime_type able to accept non-files when using :file (@janko)
-
Make logging plugin accept PORO instance which don't have an #id (@janko)
-
Add rack_file plugin for attaching Rack file hashes to models (@janko)