Added
- Support adding suffix to filename on store when path collides with the existing ones (@mshibuya 07a5632, #1855)
- Add image dimension validation (@TsubasaYoshida #2592, 3b1f8b4)
- Provide validation error details via ActiveModel::Errors#details (@mshibuya 9013999, #2150)
- Support clearing #remote_urls by assigning nil (@mshibuya 8307f93, #2067)
- Support configuration of download retry wait time (@tricknotes #2646)
- Support for ActiveRecord::Base#dup (@mshibuya, @BrianHawley 19b33b8, #2645, #1962)
- Add CarrierWave::Storage::Fog::File#to_file for interface consistency with SanitizedFile (@mshibuya 68ce83a, #1960)
- Allow SanitizedFile to accept read with an optional length and output_buffer arguments (@mshibuya 9096459, #1959)
Changed
- Stop relying on ActiveModel::Dirty change tracking for removal of unnecessary files (@mshibuya aac25c1)
- Create versions lazily to reflect subclass configurations properly (@mshibuya 1531a67, #1957, #2619)
- [BREAKING CHANGE] Use the resulting file extension on changing format by :convert (@mshibuya #2659, #2125, #2126, #2254)
- Prioritize Magic-detected content type for spoof-tolerance (@mshibuya a2ca59c, #2570)
- Handle assignments in an ActiveModel::Dirty-friendly way (@mshibuya #2658, #2404, #2409, #2468)
- Give a stable name to classes created by the mount_uploader block (@mshibuya f5b09b8, #2407, #2471)
- Give a stable name to version classes (@mshibuya a9de756, #2407, #2471)
Fixed
- Fix CarrierWave::Storage::Fog::File#read breaking when the file doesn't exist (@mshibuya 246eb01, #2524)
- Fix to preserve the original URI as much as possible on download (@mshibuya 2f3afaf, #2631)
- Fix not to invoke content type detection on #copy_to as it's costly (@mshibuya 6c6e2dc, #2465)
- Fix calling #=~ on non-String breaking in Ruby 3.2 (@aubinlrx #2653, fd03ddd)
- Fix #clean_cache! to respect the uploader's root, not the global one (@sawasaki-narumi #2652, 3cb9992, #2113)
- Fix to use helper method #fog_provider instead of checking #fog_credentials (@joshuamsager #2660)
- Fix being unable to delete a file by assigning nil (@mshibuya f8ea354, #2654, #2613)
- Fix to raise exception when ImageMagick is not installed (@mshibuya d90c399, #2060)
- Fix to remove unnecessary floodfill in CarrierWave::RMagick#resize_and_pad (@mshibuya f34a9bd)
- Fix
#{column}_cache=
fails to be stored when set as a nested attribute (@mshibuya e84d11e, #2206) - Fix to use AWS S3 regional endpoints when using virtual-hosted style (@mshibuya 8dace34, #2523)
- Fix to respect condition on processing a derived version (@mshibuya 1fecddc, #2516)
- Fix #recreate_versions! affecting the original file (@mshibuya a67bfb6, 5f00715, #2480, #2655)
- Fix
remove_#{column}!
doesn't remove the file immediately (@mshibuya b719fb3, #2540) - Fix column value populated without a file when using filename override (@mshibuya f1eff6e, #2284)
- Fix boolean configurations couldn't be set to false on a per-uploader basis (@megane42 #2642)
- Fix #clean_cache! breaking with directories that doesn't conform to CarrierWave's cache_id format (@BrianHawley #2641)