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