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

速報: Rails 8.1.0がリリースされました

Ruby on Rails 8.1.0がリリースされました。

英語版Changelogをまとめて見るにはGItHubのリリースタグ↓が便利です。v8.1.0タグの日付は日本時間の2025/10/22 09:35でした。

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

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

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

なお、Action NotifierやRack 3の必須化など、8.1.0で予告されていた機能の多くはRails 8.2.0に先送りされています。

参考: 8.2.0 · Milestone #97 · rails/rails

🔗 更新の概要

以下の6つが主要な追加機能です。

🔗 1: Active Job継続機能

Railsにジョブを中断・再開できるActive Job Continuationがマージされた(翻訳)

🔗 2: 構造化イベントレポート

RailsTokyo #1でRails 8.1 + Structured Event Reportingの紹介をしてきました

🔗 3: ローカルCI

🔗 4: markdownでのレンダリング機能

🔗 5: コマンドラインでのcredentialsフェッチ

🔗 6: 特定の関連付けを非推奨化する機能

Deprecated associations by fxn · Pull Request #55285 · rails/rails

🔗 Action Mailer Changelog

🔗 Structured event subscribers by gmcgibbon · Pull Request #55690 · rails/rails

Action Mailerに以下の構造化イベントを追加。

  • action_mailer.delivered
  • action_mailer.processed

Gannon McGibbon
同Changelogより

🔗 Action Pack Changelog

🔗 Treat as: :html tests request params as :url_encoded_form by seanpdoyle · Pull Request #50390 · rails/rails

Content-Type: x-www-form-urlencodedを指定したテストリクエストをas: :htmlで送信するよう修正。

Sean Doyle
同Changelogより

🔗 Active Record Changelog

🔗 [#55866] Fix SQLite3 data loss during table alterations with CASCADE foreign keys. by ruyrocha · Pull Request #55907 · rails/rails

SQLite3でCASCADE外部キーを利用しているテーブルをALTERで変更したときにデータが失われる問題を修正。

SQLite3で、ON DELETE CASCADE外部キーを持つ子テーブルから参照されているテーブルをALTERすると、Active Recordが子テーブルのすべてのデータをエラーなしで削除していた。原因は、SQLiteではスキーマ変更時にテーブルの再作成が必要であり、その際に元のテーブルが一時的に削除され、子テーブルでCASCADE削除がトリガーされていたため。

根本原因は、操作の順序が不適切だったことによる。元のコードではdisable_referential_integrityをトランザクション内にラップしていたが、SQLiteではPRAGMA foreign_keysをトランザクション内で変更できない(変更しようとしても無効)。そのため、テーブルの再作成時に外部キーが有効なままになり、CASCADE削除が実行されていた。

この修正により順序が入れ替わり、SQLite公式の12ステップALTER TABLE手続きに従うようになる。つまり、disable_referential_integrityはトランザクションにラップされるのではなく、トランザクションをラップするようになった。これにより、トランザクション開始前に外部キーが適切に無効化され、コミット後に再度有効化される。これにより、アトミックトランザクションでデータの整合性を維持しつつCASCADE削除を防止できる。

Ruy Rocha
同Changelogより

8.1.0でChangelog更新がなかったもの

🔗 8.1.0.rc1までの更新

以下の更新情報をどうぞ。

Rails 8.1.0.rc1がリリースされました(全項目リンク付き)

🔗 8.1.0.beta1までの更新

以下の更新情報をどうぞ。

Rails 8.1.0.beta1のChangelog: Active Support(全項目リンク付き)

Rails 8.1.0.beta1のChangelog: Active Record(全項目リンク付き)

Rails 8.1.0.beta1のChangelog: Action View(全項目リンク付き)

Rails 8.1.0.beta1のChangelog: Active Job(全項目リンク付き)

Rails 8.1.0.beta1のChangelog: Action Pack(全項目リンク付き)

Rails 8.1.0.beta1のChangelog: Active Storage(全項目リンク付き)

Rails 8.1.0.beta1のChangelog: Railties(全項目リンク付き)

Rails 8.1.0.beta1のChangelog: Active Model、Action Mailer、Action Mailbox(全項目リンク付き)

Rails 8.1.0.beta1のChangelog: Action Cable、Action Text、ガイド(全項目リンク付き)

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


CONTACT

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