mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
550d728bd1
https://github.com/rails/rails/pull/42225 identified that some of the content types used as defaults by Active Storage aren't recognized by `mini_mime`. This means that in practice code like [this](https://github.com/rails/rails/pull/42225/files#diff-7a3ec24c556b138abdbd67066ab5125b73528e45891d83142e417d3944194128R116) will crash or not function correctly. In [this](https://github.com/rails/rails/pull/42225/files#diff-c2010824d2d2e8d841ff4fc058c264c12d870e893025b153e6de571fba6b6c6cR194) example, a file with content_type `image/jpg` is treated as a PNG by the representer, since `image/jpg` isn't a valid content type according to `mini_mime`. I don't think the default content_types should include formats that have never actually worked, so I'm proposing we remove them from the defaults.
237 lines
6.9 KiB
Markdown
237 lines
6.9 KiB
Markdown
* Invalid default content types are deprecated
|
|
|
|
Blobs created with content_type `image/jpg`, `image/pjpeg`, `image/bmp`, `text/javascript` will now produce
|
|
a deprecation warning, since these are not valid content types.
|
|
|
|
These content types will be removed from the defaults in Rails 7.1.
|
|
|
|
You can set `config.active_storage.silence_invalid_content_types_warning = true` to dismiss the warning.
|
|
|
|
*Alex Ghiculescu*
|
|
|
|
## Rails 7.0.0.alpha2 (September 15, 2021) ##
|
|
|
|
* No changes.
|
|
|
|
|
|
## Rails 7.0.0.alpha1 (September 15, 2021) ##
|
|
|
|
* Emit Active Support instrumentation events from Active Storage analyzers.
|
|
|
|
Fixes #42930
|
|
|
|
*Shouichi Kamiya*
|
|
|
|
* 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.
|