Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Rails 7.1.3がリリースされました

Ruby on Rails 7.1.3がリリースされました。内容はバグ修正です。

英語版Changelogをまとめて見るにはGItHubのリリースタグ↓が便利です。

詳しくは以下のコミットリストをご覧ください。

🔗 更新の概要

アップグレード方法については以下の手順をどうぞ。

参考: § 1.3 アップグレード手順 -- Rails アップグレードガイド - Railsガイド

本記事では、GitHubリリースタグに掲載されているChangelogに対応するプルリクやコミットへのリンクを取り急ぎ貼りました。

🔗 Active Support

🔗 Handle nil backtrace_locations in SyntaxErrorProxy by eugeneius · Pull Request #50764 · rails/rails

ActiveSupport::SyntaxErrorProxybacktrace_locationsがnilの場合に対応するよう修正。

Eugene Kenny
同Changelogより

🔗 [FIX] Fix Activesupport json encode for hash with duplicate keys by maniSHarma7575 · Pull Request #50489 · rails/rails

ActiveSupport::JSON.encodeでキーが重複しないよう修正。

同じキーがString形式とSymbol形式で存在していると、同じキーが2回出力される可能性があった。

Manish Sharma
同Changelogより

🔗 fix LocalCache#read_multi_entries not namespacing keys & not deserializing raw values correctly by fusion2004 · Pull Request #50276 · rails/rails

キャッシュ名前空間でローカルキャッシュ戦略を使った場合のActiveSupport::Cache::Store#read_multiの不具合を修正。

Mark Oleson
同Changelogより

🔗 Fix Time.now/DateTime.now/Date.today to return results in a system timezone after #travel_to by 907th · Pull Request #50236 · rails/rails

#travel_toの実行後にTime.now/DateTime.now/Date.todayがシステムのタイムゾーンを返すよう修正。

#travel_toの現在の実装にはバグがある。#travel_toは引数のタイムゾーンを記憶しており、スタブ化されたすべてのメソッドがそのタイムゾーンで結果を返すようになる。ただし本来期待される振る舞いはシステムのタイムゾーンで結果を返すこと。

Aleksei Chernenkov
同Changelogより

参考: ウォッチ20231222: #travel_toで設定したタイムゾーンがクリアされていなかったのを修正

🔗 Fix MemoryStore#write with unless_exist and namespace by sbfaulkner · Pull Request #50192 · rails/rails

キャッシュ名前空間を利用する場合におけるMemoryStore#write:unless_existオプションを修正。

S. Brent Faulkner
同Changelogより

🔗 ActiveSupport::Deprecation handle blaming generated code by casperisfine · Pull Request #50053 · rails/rails

ActiveSupport::Deprecationが生成テンプレートコードの警告を表示するよう修正。

Jean Boussierfatkodima
同Changelogより

🔗 Active Record

🔗 Fix add_reference options validated on < 7.1 by skipkayhil · Pull Request #50680 · rails/rails

マイグレーションのバージョンが7.1よりも古い場合にadd_referenceで指定されるオプションがバリデーションされていたのを修正。

Hartley McGuire
同Changelogより

🔗 Ensure reload sets correct owner for each association (ActiveRecord::Persistence) by dmytro-savochkin · Pull Request #46383 · rails/rails

reloadで個別の関連付けに正しいオーナーが設定されるよう修正。

Dmytro Savochkin
同Changelogより

🔗 Fix view runtime for controllers with async queries by fatkodima · Pull Request #50634 · rails/rails

コントローラで非同期クエリを使っている場合に結果のViews値が負になる問題を修正。

fatkodima
同Changelogより

🔗 Fix load_async to work with query cache by fatkodima · Pull Request #50492 · rails/rails

#50410の修正後、クエリキャッシュ利用時にload_asyncでエラーになっていたのを修正。

fatkodima
同Changelogより

🔗 Fix polymorphic belongs_to to correctly use parent's query_constraints by fatkodima · Pull Request #50321 · rails/rails

ポリモーフィックbelongs_toが親のquery_constraintsを正しく利用するよう修正。

fatkodima
同Changelogより

🔗 Fix Preloader to not generate a query for already loaded association with query_constraints by fatkodima · Pull Request #50325 · rails/rails

query_constraintsを使っている読み込み済みの関連付けでPreloaderがクエリを生成しないよう修正。

fatkodima
同Changelogより

🔗 Fix multi-database polymorphic preloading with equivalent table names by summera · Pull Request #50382 · rails/rails

マルチデータベースにおける同じ名前のテーブルのポリモーフィックプリロードを修正。

ポリモーフィック関連付けをプリロードする場合、2つのモデル名が参照するテーブル名が同じで、それぞれ異なるデータベースにある場合、プリローダーが片方のテーブルしか読み込まないことがあった。

Ari Summer
同Changelogより

🔗 [Fix #48922] Honour encrypted attribute context in encrypted_attribute? by maximerety · Pull Request #48923 · rails/rails

encryptsに渡したコンテキストプロパティがencrypted_attribute?で考慮されるよう修正。

Maxime Réty
同Changelogより

🔗 Fix find_by for finding by associations with composite primary keys by fatkodima · Pull Request #50412 · rails/rails

複合主キーが存在する場合にもfind_byが正しく動作するよう修正。

fatkodima
同Changelogより

🔗 Fix async queries to work with query cache by fatkodima · Pull Request #50410 · rails/rails

クエリキャッシュがヒットした場合に非同期クエリが生の結果を帰す場合があったのを修正。

ShipPart.async_countの結果がクエリキャッシュにあった場合に、Promiseではなく生の整数値を返すことがあった。

fatkodima
同Changelogより

🔗 Fix Relation#transaction to not apply a default scope by casperisfine · Pull Request #50395 · rails/rails

Relation#transactionがデフォルトスコープを適用しないよう修正。

このメソッドのブロックの前後で誤ってデフォルトスコープが設定されていた。

Post.where(published: true).transaction do
  Post.count # SELECT COUNT(*) FROM posts WHERE published = FALSE;
end

Jean Boussier
同Changelogより

🔗 Fix Model.none.async_pluck to return a Promise by casperisfine · Pull Request #50356 · rails/rails

noneリレーションのasync_pluck呼び出しを修正。

Model.none.async_pluck(:id)がPromiseではなく生の値を返していた。

Jean Boussier
同Changelogより

🔗 Fix load_async for null relations by lucasmazza · Pull Request #50353 · rails/rails

noneリレーションのload_async呼び出しを修正。

Model.none.load_asyncが返す結果が壊れていた。

Lucas Mazza
同Changelogより

🔗 TrilogyAdapter: ignore host if socket is set by casperisfine · Pull Request #50349 · rails/rails

TrilogyAdapterでsocketパラメータが設定済みの場合はhostを無視するようになった。

これによって、DATABASE_URLでUNIXソケット上にコネクションを設定可能になる。

DATABASE_URL=trilogy://does-not-matter/my_db_production?socket=/var/run/mysql.sock

Jean Boussier
同Changelogより

参考: 週刊Railsウォッチ20240117: TrilogyAdapterでDATABASE_URLにUNIXソケットを指定可能になった

🔗 [Fix #49874] has_secure_token calls the setter method on initialize by abeidahmed · Pull Request #50251 · rails/rails

初期化時にhas_secure_tokenがセッターメソッドを呼び出すよう修正。

Abeid Ahmed
同Changelogより

🔗 Allow object_id as a column name for ActiveRecord by misdoro · Pull Request #50162 · rails/rails

object_idがデータベースのカラム名として再び利用可能になった。

Rails 7.1より前はobject_idを利用可能になっていた。これはobjectへのポリモーフィック関連付けの一部として利用が認められている(objectの部分は任意の他のデータベースレコードにできる)。

Mikhail Doronin
同Changelogより

参考: 週刊Railsウォッチ20231222: Active Recordでobject_idというカラム名を利用可能にした

🔗 Fix rails db:create:all to not touch databases before they are created by fatkodima · Pull Request #50055 · rails/rails

rails db:create:allがデータベース作成前にデータベースにアクセスしないよう修正。

fatkodima
同Changelogより

🔗 Action View

🔗 Better handle SyntaxError in Action View by cmaruz · Pull Request #48957 · rails/rails

Action ViewでのSyntaxError処理方法を改善。

Mario Caropreso
同Changelogより

注: 修正前はSyntaxErrorによってさらにTypeErrorが引き起こされていました。

🔗 Fix word_wrap with empty string by jonathanhefner · Pull Request #50069 · rails/rails

word_wrapが空文字列でnilを返していたのを修正。

Jonathan Hefner
同Changelogより

Rename ActionView::TestCase::Behavior::{Content,RenderedViewContent} by seanpdoyle · Pull Request #49856 · rails/rails

ActionView::TestCase::Behavior::ContentActionView::TestCase::Behavior::RenderedViewContentにリネーム。

RenderedViewContentStringを継承するようにし、private APIとして:nodoc:にした。

Sean Doyle
同Changelogより

ActionView::Template fix computation of strict locals by casperisfine · Pull Request #50058 · rails/rails

ビューテンプレートで必須になっている厳密なローカル変数(strict local)の検出方法を修正。

render @collectionとstrict localの互換性も修正。

Jean Boussier
同Changelogより

注: strict localは以下で導入された機能です。
参考: 週刊Railsウォッチ20220822: テンプレートが受け取れるローカル変数をマジックコメントで定義可能になった

🔗 Action Pack

🔗 Fix inclusion of url_helpers module in concern by jonathanhefner · Pull Request #50403 · rails/rails

ActiveSupport::Concern.で直接includeしたRails.application.routes.url_helpersがエラーになることがあったのを修正。

Jonathan Hefner
同Changelogより

🔗 Fix system tests with Chrome cached by Selenium by jonathanhefner · Pull Request #50296 · rails/rails

SeleniumでダウンロードしたChromeバイナリをシステムテストで使うと発生するエラーを修正。

Jonathan Hefner
同Changelogより

🔗 Active Job

🔗 [Fix #50713] Do not trigger loading of ActiveJob::Base in ActiveJob::TestHelper by maximerety · Pull Request #50715 · rails/rails

ActiveJob::TestHelper読み込み時にActiveJob::Baseが即時読み込みされないよう修正。

Maxime Réty
同Changelogより

🔗 [Fix #50230] Preserve serialized timezone when deserializing with ActiveJob::Serializers::TimeWithZoneSerializer by joshuay03 · Pull Request #50240 · rails/rails

ActiveSupport::TimeWithZoneの引数をデシリアライズするときに、シリアライズされたタイムゾーンが失われないよう修正。

Joshua Young
同Changelogより

参考: 週刊Railsウォッチ20231222: ActiveJob::Serializers::TimeWithZoneSerializerでタイムゾーンが消えていたのを修正

🔗 Fix ActiveJob arguments serialization to correctly serialize String subclasses having custom serializers by fatkodima · Pull Request #50090 · rails/rails

カスタムシリアライザを使っているStringサブクラスがActive Jobの引数で正しくシリアライズされるよう修正。

fatkodima
同Changelogより

🔗 Active Storage

🔗 Eagerly load preview images (N+1) by tenderlove · Pull Request #50758 · rails/rails

画像以外のアセットでプレビュー画像をフェッチすると発生するN+1クエリを修正。

Aaron Patterson & Justin Searls
同Changelogより

🔗 [ActiveStorage] Take ActiveRecord affixes into account for ActiveStorage database models by chaadow · Pull Request #50167 · rails/rails

ActiveRecord::Base.table_name_prefixコンフィグがActive Storageデータベースに関連しているすべてのモデルに反映されるよう修正。

Chedli Bourguiba
同Changelogより

参考: 週刊Railsウォッチ20231222: Active Storageモデルのテーブル名にActive Recordのプレフィックス/サフィックス設定が効くよう修正

🔗 [ActiveStorage] Fix ActiveStorage:Representations::ProxyController returning the wrong preview by chaadow · Pull Request #50098 · rails/rails

ActiveStorage::Representations::ProxyControllerが、previewableなファイルでプレビュー画像のバリアントを正しく返さない問題を修正。

Chedli Bourguiba
同Changelogより

参考: 週刊ウォッチ20231213: Active Storageのプロキシで画像のバリアントが返されない問題を修正

🔗 [ActiveStorage] Fix Non tracked variants not working with ActiveStorage::Representations::ProxyController by chaadow · Pull Request #50107 · rails/rails

ActiveStorage::Representations::ProxyControllerがトラッキングされていないバリアントをプロキシするよう修正。

Chedli Bourguiba
同Changelogより

🔗 Support nested elements inside

ネストした要素が送信ボタンに含まれている場合のダイレクトアップロード用フォームを修正。

Marc Köhlbrugge
同Changelogより

週刊Railsウォッチ20231213: Active Storageでフォームの<button>要素内でのネストをサポート

🔗 [ActiveStorage] Discard unrepresentable blobs while preprocessing by chaadow · Pull Request #50082 · rails/rails

preprocessed: trueオプションを指定した場合に、表示不可能なblobを変換するジョブをエンキューしないよう修正。

Chedli Bourguiba
同Changelogより

🔗 Process preview variant when processing preview by jonathanhefner · Pull Request #50044 · rails/rails

ActiveStorage::Preview#processedが呼び出されたらプレビュー画像のバリアントを処理するよう修正。

たとえばattached_pdf.preview(:thumb).processedを呼び出すと、フルサイズの画像に加えて:thumbバリアントもただちに生成される。
修正前は、さらにprocessed.urlなどを呼び出すまで:thumbバリアントが生成されなかった。

Chedli Bourguiba and Jonathan Hefner
同Changelogより

🔗 Fix strict loading for Active Storage previews by jonathanhefner · Pull Request #50043 · rails/rails

strict_loadingが有効な状態で、かつActive Storageプレビューのバリアントが既に処理済みの場合(ActiveStorage::Preview#urlを呼び出した場合など)にActiveRecord::StrictLoadingViolationErrorエラーが発生しないよう修正。

Jonathan Hefner
同Changelogより

🔗 Fix #50005 transform_job not accepting previewables by nicowenterodt · Pull Request #50006 · rails/rails

preprocessed: trueオプションを指定するとpreviewableなファイル(PDFなど)の名前付きバリアントの変換がクラッシュしていたのを修正。

Nico Wenterodt
同Changelogより

🔗 Railties

🔗 Make sure after_routes_loaded hook runs on boot · rails/rails@ee70ff4

config.after_routes_loadedフックが起動時にも実行されるよう修正。

Rafael Mendonça França
同Changelogより

🔗 Fix config.log_level being ignored when using a Broadcast Logger by Edouard-chin · Pull Request #50337 · rails/rails

BroadcastLogger利用時にconfig.log_levelが反映されていなかったのを修正。

Édouard Chin
同Changelogより

🔗 Make isolated engines aware of ActiveRecord::Base table name prefix by chaadow · Pull Request #50247 · rails/rails

分離したエンジンにActiveRecord::Base.table_name_prefixコンフィグが反映されるよう修正。

これにより、エンジンが定義するモデル(Active Storageなど)がActive Recordのテーブル名プレフィックスを尊重するようになる。

Chedli Bourguiba
同Changelogより

参考: 週刊Railsウォッチ20231222: Rails::Engineisolate_namespaceメソッドを修正

🔗 Separate bundle lock from bundle install by jonathanhefner · Pull Request #50183 · rails/rails

bin/rails app:templateコマンドを実行したときに、不要な可能性のあるgemがbundle lock --add-platform=...コマンド経由で追加されないよう修正。

Jonathan Hefner
同Changelogより

🔗 Changelogに更新の記載がない機能

以下はChangelogには更新の記載がありません。


TechRachoではRubyやRailsの最新情報などの記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)

関連記事

Rails 7.1.2がリリースされました

Rails 7.1.1がリリースされました

Rails 7.1.0 Active Record CHANGELOG(翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。