Railsフレームワークのサポートは、新機能(New feature)、バグ修正(bug fixes)、セキュリティ問題(security issues)の3つのグループに分かれています。セキュリティリリースを除いて、すべてのバージョン表記はX.Y.Z
の形式に従います。
Railsのバージョン命名はsemverのSemantic Versioningをシフトしたものに従っています。
パッチZ
このパッチではバグ修正のみを行います。API変更や機能追加はこのパッチでは行いません。ただし、必要に応じてセキュリティ修正が行われることもあります。
マイナーY
新機能にAPIの変更が含まれることもあります(Semverで言うメジャーバージョンに相当)。破壊的変更(breaking changes)の場合は、必ず事前にマイナーリリースまたはメジャーリリースで非推奨通知を行います。
メジャーX
新機能にAPIの変更も含まれる可能性が高まります。Railsにおけるマイナーリリースとメジャーリリースの違いは、破壊的変更の大きさの違いであり、通常は特別な場合にのみ行われます。
新機能はmainブランチにのみ追加されます。パッチリリースで新機能を追加することはありません。
マイナーリリースのバグ修正が行われるのは、シリーズの最初のリリースから1年間です。 たとえば、理論上の1.1.0が2023年1月1日にリリースされた場合、2024年1月1日までバグ修正が行われ、以後はサポート対象外とみなされます。
バグ修正は通常、mainブランチに追加されます。十分なニーズがある場合は、最新リリースシリーズのx-y-stableブランチにバックポートされます。x-y-stableブランチに十分なバグ修正が追加されると、そのブランチから新しいパッチリリースをビルドします。 たとえば、理論上の1.2.2パッチリリースは、1-2-stableブランチからビルドされます。
サポート対象外のシリーズでは、バグフィックスがたまたま安定版ブランチに入ることがありますが、正式版としてリリースされることはありません。サポート対象外のバージョンでは、Gitでアプリケーションを安定版ブランチに向けることが推奨されます。
マイナーリリースでセキュリティ修正が提供されるのは、シリーズの最初のリリースから2年間です。 たとえば、理論上の1.1.0 が2023年1月1日にリリースされた場合、2025年1月1日までセキュリティ修正が提供され、以後のサポートは終了します。
現在のリリースシリーズ、および1つ前のリリースシリーズには、セキュリティ問題発生時にパッチや新バージョンが提供されます。
これらのリリースは、直近にリリースされたバージョンにセキュリティパッチを適用してリリースされます。続いて、それらのパッチはx-y-stable(安定版)ブランチの最後に適用されます。たとえば、1.2.3というセキュリティリリースは、理論上1.2.2を元にビルドされ、1-2-stableの最後に追加されます。つまり、最新のRailsを利用していればセキュリティリリースへのアップグレードを容易に行えます。
セキュリティリリースには、直接的なセキュリティパッチ(修正プログラム)のみが含まれます。セキュリティパッチが原因で発生したセキュリティと無関係なバグの修正は、リリースのx-y-stableブランチで公開され、バグ修正ポリシーに基づいて新しいgemとしてのみリリースされます。
セキュリティリリースは、最後のセキュリティリリースのブランチ/タグからカットされます。そうしないと、セキュリティリリースで破壊的変更が生じる可能性があります。セキュリティリリースは、アプリケーションのアップグレードを継続しやすくすることで、アプリケーションが安全であることを保証するために必要な変更のみを含むべきです。
訳注:2024年8月に更新された本メンテナンスポリシーは、それ以降のリリースにのみ適用されます。したがってRails 6.1のEOLは旧メンテナンスポリシーに沿って2024年10月1日、Rails 7.0は2025年4月1日、Rails 7.1は2025年10月1日のままとなります。(» 原文を見る)
あるリリースシリーズのサポートが終了した場合、バグ修正とセキュリティ問題の対応は各自の責任で行ってください。場合によっては修正のバックポートの提供とマージが行われる可能性もありますが、新バージョンがリリースされることはありません。Gitでアプリケーションを安定版ブランチに向けることを推奨します。アプリケーションで使われているバージョンのメンテナンスが難しい場合は、サポート対象のバージョンにアップグレードしてください。
私たちは、新機能を含むバージョンを6か月おきにリリースすることを目指しています。まれに1年間リリースが行われなかった場合は、前回のリリースのサポート期間を次回のリリースが行われるまで延長します。
npmの制約により、Railsが提供するnpmパッケージのセキュリティリリースに4桁目を使えなくなりました。つまり、同等のgemバージョン7.0.1.4
の代わりに、npmパッケージのバージョンは7.0.104
と表記されます。
バージョンはX.Y.Z0A
として算出されます(A
はセキュリティリリース)。
Railsガイドは GitHub の yasslab/railsguides.jp で管理・公開されております。本ガイドを読んで気になる文章や間違ったコードを見かけたら、気軽に Pull Request を出して頂けると嬉しいです。Pull Request の送り方については GitHub の README をご参照ください。
原著における間違いを見つけたら『Rails のドキュメントに貢献する』を参考にしながらぜひ Rails コミュニティに貢献してみてください 🛠💨✨
本ガイドの品質向上に向けて、皆さまのご協力が得られれば嬉しいです。
Railsガイド運営チーム (@RailsGuidesJP)
Railsガイドは下記の協賛企業から継続的な支援を受けています。支援・協賛にご興味あれば協賛プランからお問い合わせいただけると嬉しいです。