1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activestorage/CHANGELOG.md
Tom Prats fcc46228c6 Squashed commit of the following:
commit 1dca99ad4f8082d8daaa17c6600f3036c25f8e50
Author: Tom Prats <tprats108@gmail.com>
Date:   Thu Aug 5 18:07:00 2021 -0400

    Moved header

commit 62201870ff5c4124d90912989745819b05d94516
Merge: 5fa3ecae74 c91a8135c7
Author: Tom Prats <tprats108@gmail.com>
Date:   Thu Aug 5 14:41:22 2021 -0400

    Merge branch 'main' into active-storage-byte-range

commit 5fa3ecae745b4f7c67a6b6b1b7ec420877c96fb8
Author: Tom Prats <tprats108@gmail.com>
Date:   Thu Aug 5 14:39:53 2021 -0400

    Apply suggestions from code review

    Syntax updates

    Co-authored-by: Rafael França <rafael@franca.dev>

commit b9553e3698a7af5105171f9d63bd7b89cbb7e2c3
Author: Tom Prats <tprats108@gmail.com>
Date:   Wed Jun 23 17:36:26 2021 -0400

    Added Active Storage support for byte ranges
2021-08-05 18:12:07 -04:00

213 lines
6.2 KiB
Markdown

* Add support for byte range requests
*Tom Prats*
* Attachments can be deleted after their association is no longer defined.
Fixes #42514
*Don Sisco*
* Make `vips` the default variant processor for new apps.
See the upgrade guide for instructions on converting from `mini_magick` to `vips`. `mini_magick` is
not deprecated, existing apps can keep using it.
*Breno Gazzola*
* Deprecate `ActiveStorage::Current.host` in favor of `ActiveStorage::Current.url_options` which accepts
a host, protocol and port.
*Santiago Bartesaghi*
* Allow using [IAM](https://cloud.google.com/storage/docs/access-control/signed-urls) when signing URLs with GCS.
```yaml
gcs:
service: GCS
...
iam: true
```
*RRethy*
* OpenSSL constants are now used for Digest computations.
*Dirkjan Bussink*
* Deprecate `config.active_storage.replace_on_assign_to_many`. Future versions of Rails
will behave the same way as when the config is set to `true`.
*Santiago Bartesaghi*
* Remove deprecated methods: `build_after_upload`, `create_after_upload!` in favor of `create_and_upload!`,
and `service_url` in favor of `url`.
*Santiago Bartesaghi*
* Add support of `strict_loading_by_default` to `ActiveStorage::Representations` controllers.
*Anton Topchii*, *Andrew White*
* Allow to detach an attachment when record is not persisted.
*Jacopo Beschi*
* Use libvips instead of ImageMagick to analyze images when `active_storage.variant_processor = vips`.
*Breno Gazzola*
* Add metadata value for presence of video channel in video blobs.
The `metadata` attribute of video blobs has a new boolean key named `video` that is set to
`true` if the file has an video channel and `false` if it doesn't.
*Breno Gazzola*
* Deprecate usage of `purge` and `purge_later` from the association extension.
*Jacopo Beschi*
* Passing extra parameters in `ActiveStorage::Blob#url` to S3 Client.
This allows calls of `ActiveStorage::Blob#url` to have more interaction with
the S3 Presigner, enabling, amongst other options, custom S3 domain URL
Generation.
```ruby
blob = ActiveStorage::Blob.last
blob.url # => https://<bucket-name>.s3.<region>.amazonaws.com/<key>
blob.url(virtual_host: true) # => # => https://<bucket-name>/<key>
```
*josegomezr*
* Allow setting a `Cache-Control` on files uploaded to GCS.
```yaml
gcs:
service: GCS
...
cache_control: "public, max-age=3600"
```
*maleblond*
* The parameters sent to `ffmpeg` for generating a video preview image are now
configurable under `config.active_storage.video_preview_arguments`.
*Brendon Muir*
* The ActiveStorage video previewer will now use scene change detection to generate
better preview images (rather than the previous default of using the first frame
of the video). This change requires FFmpeg v3.4+.
*Jonathan Hefner*
* Add support for ActiveStorage expiring URLs.
```ruby
rails_blob_path(user.avatar, disposition: "attachment", expires_in: 30.minutes)
<%= image_tag rails_blob_path(user.avatar.variant(resize: "100x100"), expires_in: 30.minutes) %>
```
If you want to set default expiration time for ActiveStorage URLs throughout your application, set `config.active_storage.urls_expire_in`.
*aki77*
* Allow to purge an attachment when record is not persisted for `has_many_attached`.
*Jacopo Beschi*
* Add `with_all_variant_records` method to eager load all variant records on an attachment at once.
`with_attached_image` scope now eager loads variant records if using variant tracking.
*Alex Ghiculescu*
* Add metadata value for presence of audio channel in video blobs.
The `metadata` attribute of video blobs has a new boolean key named `audio` that is set to
`true` if the file has an audio channel and `false` if it doesn't.
*Breno Gazzola*
* Adds analyzer for audio files.
*Breno Gazzola*
* Respect Active Record's primary_key_type in Active Storage migrations.
*fatkodima*
* Allow `expires_in` for ActiveStorage signed ids.
*aki77*
* Allow to purge an attachment when record is not persisted for `has_one_attached`.
*Jacopo Beschi*
* Add a load hook called `active_storage_variant_record` (providing `ActiveStorage::VariantRecord`)
to allow for overriding aspects of the `ActiveStorage::VariantRecord` class. This makes
`ActiveStorage::VariantRecord` consistent with `ActiveStorage::Blob` and `ActiveStorage::Attachment`
that already have load hooks.
*Brendon Muir*
* `ActiveStorage::PreviewError` is raised when a previewer is unable to generate a preview image.
*Alex Robbin*
* Add `ActiveStorage::Streaming` module that can be included in a controller to get access to `#send_blob_stream`,
which wraps the new `ActionController::Base#send_stream` method to stream a blob from cloud storage:
```ruby
class MyPublicBlobsController < ApplicationController
include ActiveStorage::SetBlob, ActiveStorage::Streaming
def show
http_cache_forever(public: true) do
send_blob_stream @blob, disposition: params[:disposition]
end
end
end
```
*DHH*
* Add ability to use pre-defined variants.
```ruby
class User < ActiveRecord::Base
has_one_attached :avatar do |attachable|
attachable.variant :thumb, resize: "100x100"
attachable.variant :medium, resize: "300x300", monochrome: true
end
end
class Gallery < ActiveRecord::Base
has_many_attached :photos do |attachable|
attachable.variant :thumb, resize: "100x100"
attachable.variant :medium, resize: "300x300", monochrome: true
end
end
<%= image_tag user.avatar.variant(:thumb) %>
```
*fatkodima*
* After setting `config.active_storage.resolve_model_to_route = :rails_storage_proxy`
`rails_blob_path` and `rails_representation_path` will generate proxy URLs by default.
*Ali Ismayilov*
* Declare `ActiveStorage::FixtureSet` and `ActiveStorage::FixtureSet.blob` to
improve fixture integration.
*Sean Doyle*
Please check [6-1-stable](https://github.com/rails/rails/blob/6-1-stable/activestorage/CHANGELOG.md) for previous changes.