rc1以後の更新はありません。
🔗 Active Storage CHANGELOG(v7.1.0.rc1)
🔗 Add expires_at option to ActiveStorage::Blob#signed_id by aki77 · Pull Request #48115 · rails/rails
ActiveStorage::Blob#signed_idにexpires_atオプションを追加。rails_blob_path(user.avatar, disposition: "attachment", expires_at: 30.minutes.from_now)<%= image_tag rails_blob_path(user.avatar.variant(resize: "100x100"), expires_at: 30.minutes.from_now) %>Aki
同CHANGELOGより
expires_atは期限切れになるまでURLが変わらない点がexpires_inと異なるそうです。
参考: Rails API signed_id -- ActiveStorage::Blob
🔗 Allow attaching File or Pathname to has_one_attached by dorianmariefr · Pull Request #45606 · rails/rails
属性の代入時に、以下のように
FileやPathnameを添付できるようになった。User.create!(avatar: File.open("image.jpg")) User.create!(avatar: file_fixture("image.jpg"))Dorian Marié
同CHANGELOGより
🔗 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 endShouichi 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_mimegemを削除してmarcelgemに一本化。同じような使われ方をしているライブラリが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]).destroyShouichi 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ほか(翻訳)
概要
MITライセンスに基づいて翻訳・公開いたします。
参考: Active Storage の概要 - Railsガイド