Changelog History
Page 1
-
v3.4.0 Changes
June 14, 2021💎
base
– Fix passing options toShrine.Attachment
on Ruby 3.0 (@lucianghinda)determine_mime_type
– Return correctimage/svg+xml
MIME type for SVGs with:fastimage
analyzer (@Bandes)⚠
activerecord
– Fix keyword argument warning when adding errors with options (@janko)entity
– MakeAttacher#read
method public (@janko)entity
– Reset attachment dirty tracking inAttacher#reload
(@janko)activerecord
– Don't load the attacher onActiveRecord::Base#reload
if it hasn't yet been initialized (@janko)sequel
– Don't load the attacher onSequel::Model#reload
if it hasn't yet been initialized (@janko)
-
v3.3.0 Changes
October 04, 2020👍
s3
- Support newAws::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
– CallAttacher#reload
inSequel::Model#reload
, which keeps rest of attacher state (@janko, @jrochkind)activerecord
– CallAttacher#reload
inActiveRecord::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
– Applyversion
URL option in derivation endpoint (@janko)🚚
remove_attachment
– Delete removed file if a new file was attached right after removal (@janko)upload_endpoint
– FixShrine.upload_response
not working in a Rails controller (@pldavid2)presign_endpoint
– AddOPTIONS
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
– EnsureMemory#open
returns content in original encoding (@jrochkind)
-
v3.2.2 Changes
August 05, 2020s3
– FixS3#open
not working on aws-sdk-core 3.104 and above (@janko)
-
v3.2.1 Changes
January 12, 2020derivation_endpoint
– UseRack::Files
constant on Rack >= 2.1 (@janko)🛠 Fix Ruby 2.7 warnings regarding separation of positional and keyword arguments (@janko)
s3
– MakeS3#open
handle empty S3 objects (@janko)
-
v3.2.0 Changes
December 17, 2019validation
– Run validation onAttacher#attach
&Attacher#attach_cached
instead ofAttacher#change
(@janko)🚚
remove_invalid
– Activate also whenAttacher#validate
is run manually (@janko)🚚
remove_invalid
– Fix incompatibility withderivatives
plugin (@janko)🔌
type_predicates
– Add new plugin with convenientUploadedFile
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, 2019default_storage
– Coerce storage key to symbol inAttacher#cache_key
&Attacher#store_key
(@janko)core
– Coerce storage key to symbol inAttacher#cache_key
&Attacher#store_key
(@janko)📇
add_metadata
– Define metadata methods only for the target uploader class (@janko)derivatives
– Add:storage
option toAttacher#create_derivatives
(@janko)💎
store_dimensions
– Propagate exceptions on loadingruby-vips
in:vips
analyzer (@janko)signature
– Allow skipping rewinding by passingrewind: false
toShrine.signature
(@janko)derivatives
– AddAttacher.derivatives
alias forAttacher.derivatives_processor
(@janko)
-
v3.0.1 Changes
October 17, 2019📇
metadata_attributes
– Fix exception being raised when there is no attached file (@janko)core
– SimplifyUploadedFile#inspect
output (@janko)
-
v3.0.0 Changes
October 14, 2019derivation_endpoint
– Passaction: :derivation
when uploading derivation results (@janko)core
– AddShrine::Attachment[]
shorthand forShrine::Attachment.new
(@janko)🛠
core
– AddStorage#delete_prefixed
method for deleting all files in specified directory (@jrochkind)👕
linter
– Returntrue
inStorage::Linter#call
so that it can be used withassert
(@jrochkind)👕
linter
– AllowStorage::Linter
to accept a key that will be used for testing nonexistent file (@janko)📇
core
– Infer file extension fromfilename
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-openingFile
objects returned in derivation result (@janko)derivation_endpoint
– Allow onlyFile
orTempfile
object as derivation result (@janko)download_endpoint
– AddShrine.download_response
for calling in controller (@janko)core
– Fetch storage object lazily inShrine
instance (@janko)🔌
mirroring
– Add new plugin for replicating uploads and deletes to other storages (@janko)sequel
– Rename:callbacks
option to:hooks
(@janko)model
– AddAttacher#set_model
for setting model without loading attachment (@janko)entity
– AddAttacher#set_entity
for setting entity without loading attachment (@janko)entity
– Define#<name>_attacher
class method when includingShrine::Attachment
(@janko)🛰
derivation_endpoint
– Send only:derivation
in the instrumentation event payload (@janko)0️⃣
default_storage
– AddAttacher.default_cache
andAttacher.default_store
for settings (@janko)🗄
default_storage
– Deprecaterecord
&name
arguments to storage block (@janko)0️⃣
default_storage
– Evaluate storage block in context ofAttacher
instance (@janko)🔌 Unify persistence plugin interface (@janko)
upload_options
– KeepShrine#_upload
private (@janko)infer_extension
– KeepShrine#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 toDerivation#upload
(@janko)derivation_endpoint
– Accept additional uploader options inDerivation#upload
(@janko)derivation_endpoint
– Close the uploaded file inDerivation#upload
(@janko)core
– Stop rescuingIO#close
exceptions inShrine#upload
(@janko)core
– Add:delete
option toShrine#upload
for deleting uploaded file (@janko)s3
– Stop returning:object
inDown::ChunkedIO#data
inS3#open
(@janko)s3
– Eliminate#head_object
request inS3#open
(@janko)🚚
download_endpoint
– Remove extraStorage#exists?
check (@janko)derivation_endpoint
– AddDerivation#opened
for retrieving an opened derivation result (@janko)🚚
derivation_endpoint
– Remove extraStorage#exists?
check when:upload
is enabled but not:upload_redirect
(@janko)derivation_endpoint
- Don't pass sourceUploadedFile
object when:download
isfalse
(@janko)🚚
derivation_endpoint
– Remove:include_uploaded_file
option (@janko)derivation_endpoint
– Evaluate derivation block in context ofShrine::Derivation
(@janko)🚚
derivation_endpoint
– Remove:download_errors
option (@janko)memory
– RaiseShrine::FileNotFound
on nonexistent file inMemory#open
(@janko)file_system
– RaiseShrine::FileNotFound
on nonexistent file inFileSystem#open
(@janko)s3
– RaiseShrine::FileNotFound
on nonexistent object inS3#open
(@janko)👻
core
– AddShrine::FileNotFound
exception and require storages to raise it onStorage#open
(janko)📇
instrumentation
– Remove:metadata
from:options
inmetadata.shrine
event (@janko)📇
instrumentation
– Remove:location
,:upload_options
and:metadata
from:options
inupload.shrine
event (@janko)📇
instrumentation
– Add:metadata
to theupload.shrine
event (@janko)👍
download_endpoint
– Drop support for legacy/:storage/:id
URLs (@janko)core
– InUploadedFile#==
require files to be of the same class (@janko)core
– Add:close
option toShrine#upload
for preventing closing file after upload (@janko)memory
– AddShrine::Storage::Memory
fromshrine-memory
gem (@janko)default_url_options
– Rename to justurl_options
(@janko)🗄
delete_raw
– Deprecate plugin in favour ofderivatives
(@janko)🗄
recache
– Deprecate plugin in favour ofderivatives
(@janko)🗄
processing
– Deprecate plugin in favour ofderivatives
(@janko)🗄
versions
– Deprecate plugin in favour ofderivatives
(@janko)🔌
derivatives
– Add new plugin for storing processed files (@janko)derivation_endpoint
– Allow using symbol and string derivation names interchangeably (@janko)🚚
dynamic_storage
– RemoveShrine.dynamic_storages
method (@janko)core
– Deep duplicateShrine.opts
on subclassing (@janko)core
– AddAttacher#file!
which asserts that a file is attached (@janko)core
– ChangeShrine.uploaded_file
to raiseArgumentError
on invalid input (@janko)🗄
module_include
– Deprecate plugin over overriding core classes directly (@janko)core
– AddAttacher#cache_key
andAttacher#store_key
which return storage identifiers (@janko)👕
linter
– CallStorage#open
with options as second argument (@janko)core
– Allow data hash passed toUploadedFile.new
to have symbol keys (@janko)core
– Change howShrine::UploadedFile
sets its state from the given data hash (@janko)🗄
core
– DeprecateStorage#open
not accepting additional options (@janko)📇
refresh_metadata
– AddAttacher#refresh_metadata!
method which integrates withmodel
plugin (@janko)instrumentation
– Instrument anyStorage#open
calls in a newopen.shrine
event (@janko)restore_cached_data
– Forward options passed toAttacher#attach_cached
to metadata extraction (@janko)validation
– Allow skipping validations on attaching by passingvalidate: false
(@janko)validation
– Add:validate
option toAttacher#assign
orAttacher#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 passingRack::Request
object to the uploader (@janko)🔌
remote_url
– Require custom downloaders to raiseShrine::Plugins::RemoteUrl::DownloadError
for conversion into a validation error (@janko)infer_extension
– Fix compatibility with thepretty_location
plugin (@janko)🚚
presign_endpoint
– Remove deprecatedShrine::Plugins::PresignEndpoint::App
constant (@janko)🚚
keep_files
– Remove the ability to choose whether to keep only destroyed or only replaced files (@janko)🚚
infer_extension
– RemoveShrine#infer_extension
method (@janko)default_url_options
– Allow overriding passed URL options by deleting them inside the block (@janko)cached_attachment_data
– RenameAttacher#read_cached
toAttacher#cached_data
(@janko)sequel
– AddAttacher#atomic_promote
andAttacher#atomic_persist
(@janko)🚚
sequel
– Remove persistence fromAttacher#promote
(@janko)🚚
activerecord
– Remove persistence fromAttacher#promote
(@janko)🔌
atomic_helpers
– Add new plugin with helper methods for atomic promotion and persistence (@janko)backgrounding
– AddAttacher#promote_block
&Attacher#destroy_block
for overriding class level blocks (@janko)backgrounding
– AddAttacher.promote_block
&Attacher.destroy_block
on class level (@janko)🚚
backgrounding
– Remove overridingAttacher#swap
with atomic promotion (@janko)🚚
backgrounding
– RemoveAttacher.promote
,Attacher.delete
,Attacher.dump
,Attacher#dump
,Attacher.load
,Attacher.load_record
(@janko)model
– Allow disabling caching to temporary storage on assignment (@janko)model
– AddAttacher.from_model
,Attacher#write
(@janko)🔌
model
– Add new plugin for integrating with mutable structs (@janko)entity
– AddAttacher.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 defaultJSON
library (@janko)column
– AddAttacher#column_data
andAttacher.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 toShrine#upload
to have symbol keys (@janko)core
– ChangeShrine.uploaded_file
not to yield files anymore (@janko)core
– AllowShrine.uploaded_file
to accept file data hashes with symbol keys (@janko)🚚
core
– RemoveShrine#uploaded?
🚚
core
– RemoveShrine#delete
,Shrine#_delete
,Shrine#remove
(@janko)🚚
core
– RemoveShrine#store
,Shrine#_store
,Shrine#put
,Shrine#copy
(@janko)🚚
core
– RemoveShrine#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
– AddAttacher#data
andAttacher.from_data
for dumping to and loading from a Hash (@janko)👻
core
– ChangeAttacher#assign
to raise exception when non-cached file is assigned (@janko)core
– EnableAttacher#assign
to accept cached file data as a Hash (@janko)core
– AddAttacher#file
alias forAttacher#get
(@janko)core
– ChangeAttacher#attached?
to return whether a file is attached (@janko)core
– ChangeAttacher#promote
to always only save promoted file in memory (@janko)core
– RenameAttacher#replace
toAttacher#destroy_previous
(@janko)core
– RemoveAttacher#_promote
andAttacher#_delete
, addAttacher#promote_cached
andAttacher#destroy_attached
(@janko)core
– RenameAttacher#set
andAttacher#_set
toAttacher#change
andAttacher#set
(@janko)🚚
core
– RemoveAttacher#cache!
andAttacher#store!
, addAttacher#upload
(@janko)core
– RenameAttacher#validate_block
toAttacher#_validate
(@janko)core
– AddAttacher#attach
,Attacher#attach_cached
, extracted fromAttacher#assign
(@janko)core
– RemoveAttacher#swap
,Attacher#update
,Attacher#read
,Attacher#write
,Attacher#data_attribute
,Attacher#convert_to_data
,Attacher#convert_before_write
, andAttacher#convert_after_read
(@janko)core
– ChangeAttacher.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 deprecatedShrine::IO_METHODS
constant (@janko)📇
s3
– Replace source object metadata when copying a file from S3 (@janko)core
– ChangeUploadedFile#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
andShrine.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 onUploadedFile
(@janko)📇
validation_helpers
– Fail dimensions validations whenwidth
orheight
metadata is missing (@janko)🚚
upload_endpoint
– Remove deprecatedShrine::Plugins::UploadEndpoint::App
constant (@janko)determine_mime_type
– RemoveShrine#mime_type_analyzers
method (@janko)🚚
store_dimensions
– RemoveShrine#extract_dimensions
andShrine#dimensions_analyzers
methods (@janko)🚚
rack_file
– Remove deprecatedShrine::Plugins::RackFile::UploadedFile
constant (@janko)👍
rack_file
– Drop support for passing file hash toShrine#upload
andShrine#store
(@janko)🚚
download_endpoint
– MoveShrine::Plugins::DownloadEndpoint::App
intoShrine::DownloadEndpoint
(@janko)🚚
download_endpoint
– Remove deprecatedShrine::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 deprecatedShrine::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 inFileSystem#clear!
(@janko)file_system
– Don't accept a block anymore inFileSystem#open
(@janko)🚚
file_system
– Remove deprecatedFileSystem#download
method (@janko)🚚
file_system
– MakeFileSystem#movable?
andFileSystem#move
methods private (@janko)🚚
file_system
– Remove deprecation warning on unrecognized options inFileSystem#upload
(@janko)🚚
file_system
– Remove deprecated:host
option forFileSystem#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 deprecatedS3#download
method (@janko)🚚
s3
– Remove deprecatedS3#stream
method (@janko)👍
presign_endpoint
– Drop support for presign objects that don't respond to#to_h
(@janko)s3
– Return a Hash inS3#presign
when method is POST (@janko)🚚
s3
– Remove:download
option inS3#url
(@janko)🚚
s3
– Remove support for non URI-escaped content disposition values (@janko)🚚
s3
– RemoveS3#s3
method (@janko)🚚
s3
– Remove support for specifying:multipart_threshold
as an integer (@janko)🚚
s3
– Remove:host
option onS3#initialize
(@janko)👍
s3
– Drop support foraws-sdk-s3
versions lower than 1.14 (@janko)👍
s3
– Drop support foraws-sdk
2.x (@janko)
-
v3.0.0.rc
September 28, 2019 -
v3.0.0.beta3
September 25, 2019