Ruby on Rails 6.0.4がリリースされました。バグ修正が主で、セキュリティ修正緊急のセキュリティ修正は含まれていません。
Rails 6.0.4 has been released https://t.co/NcNFh93V3P
— Ruby on Rails (@rails) June 15, 2021
英語版Changelogをまとめて見るにはGItHubのリリースタグ↓が便利ですv6.0.4
タグの日付は日本時間の6/16 06:21でした。
- リリースタグ: Release 6.0.4 · rails/rails
詳しくは以下のコミットリストをご覧ください。
🔗 更新の概要
🔗 Changelogに更新が記載されている機能
以下の機能の順序はリリースノートの記載順に従っています。
本記事では、GitHubリリースタグに掲載されているChangelogに対応するプルリクやコミットへのリンクを取り急ぎ貼りました。
🔗 Changelogに更新の記載がない機能
以下はChangelogには更新の記載がありません。
⚓ Action Pack
- PR: Accept and default to base64_urlsafe CSRF tokens. by dragonsinth · Pull Request #18496 · rails/rails
Base64 strict-encoded CSRFトークンのWeb安全性は本質的ではないため、取り扱いが困難。たとえば、クライアントが読めるcookieにCSRFトークンを入れてブラウザに送信するという一般的な方法は、そのままでは正しく機能しない。値をURLエンコードおよびデコードして、転送に耐えられるようにする必要がある。
Rails 6.1ではBase64 urlsafe-encoded CSRFを生成する。このトークンの転送は本質的に安全。バリデーションでは、urlsafeトークンの他に、後方互換性のためにstrict-encodedトークンも受け付ける。
Scott Blum, Étienne Barrié
リリースノートChangelogより大意
- 関連エントリ: Make Base64.urlsafe methods actually urlsafe. by dragonsinth · Pull Request #815 · ruby/ruby
- 週刊Railsウォッチ「先週の改修」関連エントリ: Base64の
strict_decode64
をurlsafe_decode64
に変更
action_dispatch.use_cookies_with_metadata
を有効にしたときに、署名済みおよび暗号化済みcookieの値にfalseを保存できるように修正。
Rolandas Barysas
リリースノートChangelogより大意
🔗 Action View
SanitizeHelper.sanitized_allowed_attributes
とSanitizeHelper.sanitized_allowed_tags
がsafe_list_sanitizer
のクラスメソッドを呼び出すよう修正。
Taufiq Muhammadi
リリースノートChangelogより大意
🔗 Active Record
not_で始まるenum要素のwarningを、not_なしで始まるenum要素が存在してコンフリクトする場合にのみ表示するよう修正。
Alex Ghiculescu
リリースノートChangelogより大意
autosave済みの
has_one
関連付けに対応する関連付けが読み込まれていない場合に読み込むよう修正。
Steven Weber
リリースノートChangelogより大意
table_name
が変更されている場合にstatementキャッシュをリセットするよう修正。
Ryuta Kamizono
リリースノートChangelogより大意
- 関連issue: Association statement cache cause wrong query after table name changed · Issue #36453 · rails/rails
masterブランチの型キャストはかなり向上しているので、よく使われる型ではあまり問題にならないが、厳密に言えばeager loadingは(
find_by_sql
でもやっているように)データベースのカラム型を尊重すべき。
Ryuta Kamizono
同PRより大意
コレクション関連付けが複数回autosaveされないよう修正。
Eugene Kenny
リリースノートChangelogより大意
- 関連issue: Autosaving associations twice in Rails 6.0.3 violates uniqueness · Issue #39173 · rails/rails
- 週刊Railsウォッチ「先週の改修」関連エントリ: コレクション関連付けがきっかり1度だけオートセーブされるよう修正
- PR: Fix issue with expression index in insert_all by austenmadden · Pull Request #39517 · rails/rails
insert_all
の:unique_by
オプションが式インデックスで使われたときの問題を修正。
ActiveRecord::Persistence.insert_al
やActiveRecord::Persistence.upsert_all
の:unique_by
オプションが式インデックスの名前で使われるとエラーが発生した。:unique_by
のフォーマッティング周りの振舞いをガードすることでこの問題が修正される。
# 使い方
create_table :books, id: :integer, force: true do |t|
t.column :name, :string
t.index "lower(name)", unique: true
end
Book.insert_all [{ name: "MyTest" }], unique_by: :index_books_on_lower_name
Austen Madden
リリースノートChangelogより大意
- 関連issue: Expression index raises error when used in insert_all unique_by option · Issue #39516 · rails/rails
カスタムスコープを用いるポリモーフィック関連付けのプリロードを修正。
Ryuta Kamizono
リリースノートChangelogより大意
- 関連issue: Preload no longer associates record with owner when custom scope is passed · Issue #36638 · rails/rails
- 関連issue: Rails 6: `Associations::Preloader` not working when given a scope · Issue #37720 · rails/rails
or
メソッドにSQLコメント付きのリレーションを渡せるようになった。
Takumi Shotoku
リリースノートChangelogより大意
- 関連issue: Avoid assigning duplicate values to join_values by sinsoku · Pull Request #38145 · rails/rails
カウンタキャッシュと楽観的ロックのコンフリクトを解消。
Active Recordインスタンスのロックバージョンの更新は、カウンタキャッシュの更新後に行うこと。こうすることで、対応するデータベースレコードのlock_version
カラムとのパリティが以後のトランアクションで維持され、不要なActiveRecord::StaleObjectError
を回避できる。
Aaron Lipman
リリースノートChangelogより大意
source/throughのスコープで
joins
が使われる場合のthrough関連付けの問題を修正。
Ryuta Kamizono
リリースノートChangelogより大意
through関連付けが
includes
やpreload
でsourceスコープを扱うよう修正。
Ryuta Kamizono
リリースノートChangelogより大意
joins
の元の順序が維持されるようArelのjoins
のeager loadingを修正。
Ryuta Kamizono
リリースノートChangelogより大意
eager loadingと
orderとlimit
(またはoffset
)したときのcount
のGROUP BYを修正。
Ryuta Kamizono
リリースノートChangelogより大意
異なる関連付け間にまたがる複数の
left_joins
をmerge
したときのleft_joins
の順序を修正。
Ryuta Kamizono
リリースノートChangelogより大意
MySQLのインデックス作成でテーブルのbulk変更時のインデックスコメントを維持するよう修正。
Ryuta Kamizono
リリースノートChangelogより大意
データベースで機能がサポートされていない場合は
remove_foreign_key
の:validate
オプションをチェックしないよう変更。
Ryuta Kamizono
リリースノートChangelogより大意
重複した"group by"フィールドを維持するよう集約の結果を修正。
Ryuta Kamizono
リリースノートChangelogより大意
プリロード使用時に重複したレコードを返さないよう修正。
Bogdan Gusiev
リリースノートChangelogより大意
- 関連issue: Preloading `has_many through` associations loads duplicated records · Issue #39073 · rails/rails
- 関連issue: Duplicate records returned when using ActiveRecord::Associations::Preloader on preloaded records. · Issue #39035 · rails/rails
🔗 Active Storage
Poppler PDFプレビューアがプレビュー画像をレンダリングするとき、元のドキュメントのmediaボックスではなくcropboxを使っていたため、印刷のマージンが隠されていた。この修正によって、MuPDFプレビューアと振舞いが一致する。
Vincent Robert
リリースノートChangelogより大意
🔗 Active Support
ActiveSupport::Cache::RedisCacheStore
がオプションをread_multi
に渡さず、fetch_multi`が正しく動かなくなった問題を修正。
Rajesh Sharma
リリースノートChangelogより大意
with_options
のミューテーションのリーク回避のため、オプションハッシュをコピーするよう修正。
Eugene Kenny
リリースノートChangelogより大意
🔗 Railties
- PR: Handle paths with trailing slashes in rails test by eugeneius · Pull Request #38814 · rails/rails
rails test
に渡す相対パスの末尾にスラッシュを付けられるようになった。
Eugene Kenny
リリースノートChangelogより大意
リクエストで未知のHTTPメソッドが使われた場合に405 Method Not Allowedを返すよう修正。
Loren Norman
リリースノートChangelogより大意
TechRachoではRubyやRailsの最新情報などの記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)