Ruby on Rails 7.1.3がリリースされました。内容はバグ修正です。
Rails 7.1.3 has been released https://t.co/O625QTqZlZ
— Ruby on Rails (@rails) January 16, 2024
英語版Changelogをまとめて見るにはGItHubのリリースタグ↓が便利です。
- Release 7.1.3 · rails/rails(日本時間2024/01/17 08:02)
詳しくは以下のコミットリストをご覧ください。
🔗 更新の概要
アップグレード方法については以下の手順をどうぞ。
参考: § 1.3 アップグレード手順 -- Rails アップグレードガイド - Railsガイド
本記事では、GitHubリリースタグに掲載されているChangelogに対応するプルリクやコミットへのリンクを取り急ぎ貼りました。
🔗 Active Support
🔗 Handle nil backtrace_locations in SyntaxErrorProxy by eugeneius · Pull Request #50764 · rails/rails
ActiveSupport::SyntaxErrorProxy
のbacktrace_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 Boussier, fatkodima
同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::Content
をActionView::TestCase::Behavior::RenderedViewContent
にリネーム。
RenderedViewContent
がString
を継承するようにし、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::Engine
のisolate_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ウォッチタグ)