2021-08-28 03:41:19 -04:00
|
|
|
* Emit Active Support instrumentation events from Active Storage analyzers.
|
2021-08-03 23:53:58 -04:00
|
|
|
|
|
|
|
Fixes #42930
|
|
|
|
|
|
|
|
*Shouichi Kamiya*
|
|
|
|
|
2021-08-05 18:12:07 -04:00
|
|
|
* Add support for byte range requests
|
|
|
|
|
|
|
|
*Tom Prats*
|
|
|
|
|
2021-06-16 15:22:38 -04:00
|
|
|
* Attachments can be deleted after their association is no longer defined.
|
|
|
|
|
|
|
|
Fixes #42514
|
|
|
|
|
|
|
|
*Don Sisco*
|
|
|
|
|
2021-07-14 13:26:43 -04:00
|
|
|
* 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*
|
|
|
|
|
2021-02-10 08:31:22 -05:00
|
|
|
* Deprecate `ActiveStorage::Current.host` in favor of `ActiveStorage::Current.url_options` which accepts
|
|
|
|
a host, protocol and port.
|
|
|
|
|
|
|
|
*Santiago Bartesaghi*
|
|
|
|
|
2021-07-07 13:20:11 -04:00
|
|
|
* Allow using [IAM](https://cloud.google.com/storage/docs/access-control/signed-urls) when signing URLs with GCS.
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
gcs:
|
|
|
|
service: GCS
|
|
|
|
...
|
|
|
|
iam: true
|
|
|
|
```
|
2021-07-20 21:08:08 -04:00
|
|
|
|
2021-07-07 13:20:11 -04:00
|
|
|
*RRethy*
|
|
|
|
|
2021-03-22 05:25:49 -04:00
|
|
|
* OpenSSL constants are now used for Digest computations.
|
|
|
|
|
|
|
|
*Dirkjan Bussink*
|
|
|
|
|
2021-06-24 19:47:21 -04:00
|
|
|
* 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*
|
|
|
|
|
2021-06-24 23:04:03 -04:00
|
|
|
* Remove deprecated methods: `build_after_upload`, `create_after_upload!` in favor of `create_and_upload!`,
|
|
|
|
and `service_url` in favor of `url`.
|
|
|
|
|
|
|
|
*Santiago Bartesaghi*
|
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
* Add support of `strict_loading_by_default` to `ActiveStorage::Representations` controllers.
|
2021-06-26 13:53:56 -04:00
|
|
|
|
|
|
|
*Anton Topchii*, *Andrew White*
|
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
* Allow to detach an attachment when record is not persisted.
|
2021-06-17 10:44:08 -04:00
|
|
|
|
|
|
|
*Jacopo Beschi*
|
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
* Use libvips instead of ImageMagick to analyze images when `active_storage.variant_processor = vips`.
|
2021-06-20 15:51:51 -04:00
|
|
|
|
|
|
|
*Breno Gazzola*
|
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
* Add metadata value for presence of video channel in video blobs.
|
2021-06-09 09:56:52 -04:00
|
|
|
|
|
|
|
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*
|
|
|
|
|
2021-06-16 04:26:51 -04:00
|
|
|
* Deprecate usage of `purge` and `purge_later` from the association extension.
|
|
|
|
|
|
|
|
*Jacopo Beschi*
|
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
* Passing extra parameters in `ActiveStorage::Blob#url` to S3 Client.
|
2021-06-17 07:32:51 -04:00
|
|
|
|
|
|
|
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*
|
|
|
|
|
2021-06-16 08:38:13 -04:00
|
|
|
* Allow setting a `Cache-Control` on files uploaded to GCS.
|
2021-06-16 04:26:51 -04:00
|
|
|
|
2021-06-16 08:38:13 -04:00
|
|
|
```yaml
|
|
|
|
gcs:
|
|
|
|
service: GCS
|
|
|
|
...
|
|
|
|
cache_control: "public, max-age=3600"
|
2021-06-17 17:33:27 -04:00
|
|
|
```
|
2021-07-20 21:08:08 -04:00
|
|
|
|
2021-06-16 08:38:13 -04:00
|
|
|
*maleblond*
|
2021-06-14 07:45:01 -04:00
|
|
|
|
2021-06-13 19:02:13 -04:00
|
|
|
* 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*
|
|
|
|
|
2021-06-14 07:45:01 -04:00
|
|
|
* 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*
|
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
* Allow to purge an attachment when record is not persisted for `has_many_attached`.
|
2021-06-03 09:09:31 -04:00
|
|
|
|
|
|
|
*Jacopo Beschi*
|
|
|
|
|
2021-02-09 13:09:19 -05:00
|
|
|
* 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*
|
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
* Add metadata value for presence of audio channel in video blobs.
|
2021-06-04 11:43:02 -04:00
|
|
|
|
|
|
|
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*
|
|
|
|
|
2021-06-08 15:11:00 -04:00
|
|
|
* Adds analyzer for audio files.
|
|
|
|
|
|
|
|
*Breno Gazzola*
|
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
* Respect Active Record's primary_key_type in Active Storage migrations.
|
2021-06-03 13:30:35 -04:00
|
|
|
|
|
|
|
*fatkodima*
|
|
|
|
|
2021-04-23 08:03:38 -04:00
|
|
|
* Allow `expires_in` for ActiveStorage signed ids.
|
|
|
|
|
|
|
|
*aki77*
|
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
* Allow to purge an attachment when record is not persisted for `has_one_attached`.
|
2021-05-19 04:12:15 -04:00
|
|
|
|
|
|
|
*Jacopo Beschi*
|
|
|
|
|
2021-05-27 18:36:16 -04:00
|
|
|
* 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*
|
|
|
|
|
2021-01-29 09:07:30 -05:00
|
|
|
* `ActiveStorage::PreviewError` is raised when a previewer is unable to generate a preview image.
|
|
|
|
|
|
|
|
*Alex Robbin*
|
|
|
|
|
2021-02-19 09:40:56 -05:00
|
|
|
* 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:
|
2021-01-29 09:07:30 -05:00
|
|
|
|
2021-02-19 09:40:56 -05:00
|
|
|
```ruby
|
|
|
|
class MyPublicBlobsController < ApplicationController
|
|
|
|
include ActiveStorage::SetBlob, ActiveStorage::Streaming
|
2021-01-29 09:07:30 -05:00
|
|
|
|
2021-02-19 09:40:56 -05:00
|
|
|
def show
|
|
|
|
http_cache_forever(public: true) do
|
|
|
|
send_blob_stream @blob, disposition: params[:disposition]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
```
|
2021-01-29 09:07:30 -05:00
|
|
|
|
2021-02-19 09:40:56 -05:00
|
|
|
*DHH*
|
|
|
|
|
2020-05-03 15:03:46 -04:00
|
|
|
* Add ability to use pre-defined variants.
|
|
|
|
|
|
|
|
```ruby
|
|
|
|
class User < ActiveRecord::Base
|
2020-05-04 06:01:47 -04:00
|
|
|
has_one_attached :avatar do |attachable|
|
|
|
|
attachable.variant :thumb, resize: "100x100"
|
|
|
|
attachable.variant :medium, resize: "300x300", monochrome: true
|
|
|
|
end
|
2020-05-03 15:03:46 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
class Gallery < ActiveRecord::Base
|
2020-05-04 06:01:47 -04:00
|
|
|
has_many_attached :photos do |attachable|
|
|
|
|
attachable.variant :thumb, resize: "100x100"
|
|
|
|
attachable.variant :medium, resize: "300x300", monochrome: true
|
|
|
|
end
|
2020-05-03 15:03:46 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
<%= image_tag user.avatar.variant(:thumb) %>
|
|
|
|
```
|
|
|
|
|
|
|
|
*fatkodima*
|
|
|
|
|
2021-01-28 18:52:00 -05:00
|
|
|
* 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.
|
2020-04-19 15:59:39 -04:00
|
|
|
|
2021-01-28 18:52:00 -05:00
|
|
|
*Ali Ismayilov*
|
2020-04-19 15:59:39 -04:00
|
|
|
|
2021-01-24 05:10:30 -05:00
|
|
|
* Declare `ActiveStorage::FixtureSet` and `ActiveStorage::FixtureSet.blob` to
|
2021-07-20 21:08:08 -04:00
|
|
|
improve fixture integration.
|
2020-03-09 08:08:53 -04:00
|
|
|
|
2021-01-24 05:10:30 -05:00
|
|
|
*Sean Doyle*
|
2020-04-15 08:23:24 -04:00
|
|
|
|
2021-07-20 21:08:08 -04:00
|
|
|
|
2020-12-02 18:37:26 -05:00
|
|
|
Please check [6-1-stable](https://github.com/rails/rails/blob/6-1-stable/activestorage/CHANGELOG.md) for previous changes.
|