Active Storage CHANGELOG(v7.1.0.beta1)
Disable session in ActiveStorage blobs and representations proxy controllers by brunoprietog · Pull Request #48869 · rails/rails
CloudFlareなどのCDNでキャッシュをデフォルトで有効にできるようにするため、以下でセッションを無効化した。
修正: #44136
Bruno Prieto
同CHANGELOGより
Add tags to audio analyzer metadata by Gambitboy · Pull Request #48823 · rails/rails
ActiveStorage::Analyzer::AudioAnalyzer
の出力にtags
メタデータを追加。Keaton Roux
同CHANGELOGより
参考: 週刊Railsウォッチ20230809: オーディオアナライザのメタデータにタグを自動追加するようになった
Add an option to transform AS variants in the background by shouichi · Pull Request #47473 · rails/rails
バリアントに
preprocessed
オプションを追加。Active Storageのバリアント(サイズ違いの別画像)は、必要が生じたときにその都度処理されるが、確実にアクセスされることが事前にわかっている場合は事前に処理したいことがある。
バリアントを宣言するときに以下のように
preprocessed
オプションを追加できるようになった。class User < ApplicationRecord has_one_attached :avatar do |attachable| attachable.variant :thumb, resize_to_limit: [100, 100], preprocessed: true end end
Shouichi Kamiya
同CHANGELOGより
参考: 週刊Railsウォッチ20230802: Active Storageのバリアントをバックグラウンドで事前変換するオプションが追加
Fix variants not included when eager loading multiple records containing a single attachment by russellporter · Pull Request #47370 · rails/rails
添付ファイルが1個ある複数のレコードをeager loadingしたときにバリアントが含まれていなかったのを修正。
has_one_attached
リレーションでwith_attached_#{name}
スコープを使ったときに、添付ファイルのバリアントがeager loadingされていなかった。Russell Porter
同CHANGELOGより
参考: これは7-0-stableにもバックポートされました(#49231)。
Allow an ActiveStorage attachment to be removed via a form post by natematykiewicz · Pull Request #48339 · rails/rails
フォームのPOSTでActive Storage添付ファイルを削除できるようになった。
添付ファイルの削除は、以下のように
nil
を渡せば既に削除できるようになっている。User.find(params[:id]).update!(avatar: nil)
ただしフォームからは
nil
パラメータをPOSTできない(空文字列""
のみPOSTできる)。しかしこれは署名済みblob idとして扱われるため、空文字列をPOSTするとActiveSupport::MessageVerifier::InvalidSignature: mismatched digest
エラーが発生する。この修正によって、
nil
も空文字も削除として扱われるようになり、添付ファイルを以下で削除できるようになった。User.find(params[:id]).update!(params.require(:user).permit(:avatar))
Nate Matykiewicz
同CHANGELOGより
参考: 週刊Railsウォッチ20230621: ActiveStorageの添付ファイルをフォームのPOSTで削除可能になった
Remove mini_mime usage in favour of marcel by vipulnsward · Pull Request #47754 · rails/rails
mini_mime
gemを削除してmarcel
gemに一本化。同じような使われ方をしているライブラリが2つある。この変更によってmini_mimeへの依存が削除され、mercelにある類似のメソッドを使うようになる。
Vipul A M
同CHANGELOGより
参考: 週刊Railsウォッチ20230425: mini_mimeを削除してmarcelに完全移行
Allow destroying active storage variants by shouichi · Pull Request #47150 · rails/rails
Active Storageのバリアントを
destroy
できるようになった。User.first.avatar.variant(resize_to_limit: [100, 100]).destroy
Shouichi Kamiya, Yuichiro NAKAGAWA, Ryohei UEDA
同CHANGELOGより
参考: 週刊Railsウォッチ20230425: Active Storageのvariantを個別に削除可能にした
Extract sample rate in audio analyzer by matteeyah · Pull Request #47749 · rails/rails
ActiveStorage::Analyzer::AudioAnalyzer
の出力にsample_rate
メタデータを追加。Matija Čupić
同CHANGELOGより
参考: 週刊Railsウォッチ20230412: ActiveStorage::Analyzer::AudioAnalyzer
でsample_rate
も取得できるようになった
Remove deprecated purge
and purge_later
methods from the attachme… · rails/rails@18e53fb
非推奨化されていた
purge
メソッドとpurge_later
メソッドを添付ファイルの関連付けから削除。Rafael Mendonça França
同CHANGELOGより
Remove deprecated behavior when assigning to a collection of attachments · rails/rails@c720b7e
添付ファイルのコレクションに代入するときの非推奨化された振る舞いを削除。
今後はコレクションへの追加ではなく、コレクションが置き換わるようになる。
Rafael Mendonça França
同CHANGELOGより
参考: Deprecate replace_on_assign_to_many by santib · Pull Request #42596 · rails/rails
Remove deprecated ActiveStorage::Current#host
and `ActiveStorage::C… · rails/rails@0591de5
ActiveStorage::Current
で非推奨化されていた#host
メソッドと#host=
メソッドを削除。Rafael Mendonça França
同CHANGELOGより
Remove deprecated invalid default content types in Active Storage con… · rails/rails@4edaa41
Active Storage設定で非推奨化されていた無効なContent-Typeを削除。
Rafael Mendonça França
同CHANGELOGより
Add missing preview
event to ActiveStorage::LogSubscriber
by chaadow · Pull Request #46291 · rails/rails
ActiveStorage::LogSubscriber
にこれまで出力されていなかったpreview
イベントを追加。
preview
はActiveStorage::Previewer
で監視されるが、Active StorageのLogSubscriber
クラス内に追加されていなかった。この変更によって、
Rails.logger
内の他のActive Storageイベント(upload
やdownload
など)と同様に、プレビュー発生時のログも取れるようになる。Chedli Bourguiba
同CHANGELOGより
- Rails API:
ActiveStorage::LogSubscriber
FFmpeg (5.0+) has updated the tag where rotation info is retrieved from by hahmed · Pull Request #45837 · rails/rails
FFmpeg 5.0以降でのローテーション値の取得を修正。
FFmpeg 5.0以降では、ローテーション(動画の回転)値がタグから削除され、
side_data_list
で値を取得できるようになっている。
この更新によって、値が-90
や-270
の場合は動画が回転したことを示せるようになった。Haroon Ahmed
同CHANGELOGより
参考: これはRails 7.0.6に含まれています。
Touch model records after ActiveStorage::Blob is analyzed by natematykiewicz · Pull Request #45579 · rails/rails
ActiveStorage::Blob
のanalyze
後に、対応する全モデルの添付ファイルをtouch
するようになった。これにより、最初の
analyze_later
が完了する前にレコードがリクエストされてキャッシュエントリが作成される競合状態が修正され、他の何かがレコードを更新するまでキャッシュエントリが無効化されないようになる。また、blobが再度analyze
される場合にもキャッシュエントリを無効化するようになる(これはアナライザのバグを修正したときや新しいアナライザを追加した場合に便利)。Nate Matykiewicz
同CHANGELOGより
参考: 週刊Railsウォッチ20220801: ActiveStorage::Blob
のアナライズ後にモデルのレコードをtouch
するよう修正
Allow to use pre-defined variants for previews by richardboehme · Pull Request #45098 · rails/rails
添付ファイルで
preview
やrepresentation
を呼び出したときにも定義済みのバリアントを利用できるようになった。class User < ActiveRecord::Base has_one_attached :file do |attachable| attachable.variant :thumb, resize_to_limit: [100, 100] end end
<%= image_tag user.file.representation(:thumb) %>
Richard Böhme
同CHANGELOGより
参考: 週刊Railsウォッチ20220725: Active Storageのpreview
やrepresentation
でも定義済みバリアントを使えるようにする
Make ActiveStorage attach method be consistent between one and many by santib · Pull Request #45397 · rails/rails
attach
メソッドが、常に添付ファイルを返すようになった。ただしレコードが永続化済みかつ未変更で、かつsave
が失敗した場合はnil
を返す。Santiago Bartesaghi
同CHANGELOGより
参考: 週刊Railsウォッチ20220627: Active Storageのattach
メソッドをAttached::One
についても修正
Fix #41661 attaching multiple times within transaction by santib · Pull Request #42300 · rails/rails
トランザクション内で
attach
が複数回呼び出された場合にファイルが正しくアップロードされない問題を修正。以下のコード例における設定済みサービスへのアップロードは、最後のファイルを除いて失敗する。
ActiveRecord::Base.transaction do user.attachments.attach({ content_type: "text/plain", filename: "dummy.txt", io: ::StringIO.new("dummy"), }) user.attachments.attach({ content_type: "text/plain", filename: "dummy2.txt", io: ::StringIO.new("dummy2"), }) end assert_equal 2, user.attachments.count assert user.attachments.first.service.exist?(user.attachments.first.key) # 失敗
アップロード待ちのサブ変更をトラッキングして、トランザクションがコミットされたらアップロードすることで、この問題を修正した。
修正: #41661
Santiago Bartesaghi, Bruno Vezoli, Juan Roig, Abhay Nikam
同CHANGELOGより
参考: 週刊Railsウォッチ20220613: Active Storage: トランザクション内でattach
の複数回実行が失敗するのを修正
Raise exception if Active Storage is configured and config.active_storage.service
is not explicitly set by ghousemohamed · Pull Request #44372 · rails/rails
config.active_storage.service
にサービスが未設定の場合に例外を発生するようになった。Active Storageが設定済みで、対応する環境のコンフィグファイルに
config.active_storage.service
が設定されていない状態でActive Storageを使おうとしたときに、わかりやすい例外メッセージを出力するようになる。Ghouse Mohamed
同CHANGELOGより
Rails 7.1: config.active_storage.serviceが未設定の場合にRuntimeErrorで通知(翻訳)
Fixes ActiveStorage proxy downloads of files over 5mb in S3-like storages by feliperaul · Pull Request #45102 · rails/rails
プロキシモードでの5MBを超えるファイルダウンロードを修正。
従来は、S3などのサービスで5MBを超えるファイルをプロキシモードで表示またはダウンロードしようとすると、5.2MBあたりで壊れたメッセージが返されたり、ダウンロードがランダムに停止することがあった。
ActiveStorage::Blobs::ProxyController
でサービス上のこのような巨大ファイルを正しくストリーミングできるように修正したことで、問題なくクライアントで扱えるようになった。修正: #44679
Felipe Raul
同CHANGELOGより
参考: この修正はRails 7.0.4に含まれています。
Return the blob/blobs when #attach is able to save the record by ghousemohamed · Pull Request #44439 · rails/rails
添付ファイルをレコードに
save
するとblobオブジェクトを返すようになった。従来は、添付ファイルを
save
しても添付ファイルを含むblobが返されなかった。
添付ファイルをレコードにsave
するときに#attach
メソッドを使うようにしたことで、ファイルが添付された単一のblobまたはblobの配列を返すようになった。添付ファイルのsave
が失敗した場合はfalse
を返す。Ghouse Mohamed
同CHANGELOGより
参考: 週刊Railsウォッチ20220308: #attach
した添付ファイルの保存に成功するとblob
を返すようになった
Don't stream redirect controller responses by lukel97 · Pull Request #44244 · rails/rails
リダイレクトモードではレスポンスをストリーミングしないようになった。
従来は、リダイレクトモードとプロキシモードのどちらもレスポンスをストリーミングしていたため、新しいスレッドが作成されてコネクションプールのコネクションが漏洩する可能性があった。
しかし、リダイレクトモードはデータを実際には送信しないため、ストリーミングは不要。Luke Lau
同CHANGELOGより
参考: 週刊Railsウォッチ20220131: Active Storageのリダイレクトモードでレスポンスをストリーミングしないようにした
Safe for Direct Uploads in js Libraries or Frameworks by Roriz · Pull Request #47773 · rails/rails
ライブラリやフレームワークでのダイレクトアップロードを安全に行えるようにした。
ダイレクトアップロード中のカスタムヘッダーを有効にしたことで、
Authorization
のBearerトークンや他の形式の認証トークンをヘッダー経由で含められるようになった。Radamés Roriz
同CHANGELOGより
以前の変更については7-0-stableのCHANGELOGを参照。
関連記事
Rails 7.1に入る主要な機能まとめ(2)error_highlight対応、routes --grepほか(翻訳)
The post Rails 7.1.0 Active Storage CHANGELOG(翻訳) first appeared on TechRacho.
概要
MITライセンスに基づいて翻訳・公開いたします。
7.1.0リリーズ後に更新があれば反映します。
参考: Active Storage の概要 - Railsガイド