バージョン番号が異なるレールバージョンはどの程度互換性がありませんか? これらの数字の意味は何ですか?
たとえば、バージョン 2.8.7 から 3.0.1 では、重大な非互換性の問題が発生する可能性があります。
しかし、バージョン 2.7.1 と 2.7.2、または 3.0.6 と 3.0.7 はどの程度互換性がないのでしょうか?
バージョン番号が異なるレールバージョンはどの程度互換性がありませんか? これらの数字の意味は何ですか?
たとえば、バージョン 2.8.7 から 3.0.1 では、重大な非互換性の問題が発生する可能性があります。
しかし、バージョン 2.7.1 と 2.7.2、または 3.0.6 と 3.0.7 はどの程度互換性がないのでしょうか?
一般的に言えば、数値の変化が大きいほど、コアの変化も大きくなります。したがって、2.8.7 から 3.0.1 への変更は、Rails 2 から Rails 3 に移行するため、大きな変更になります (実際には非常に大きな変更です)。
一方、2.7.1 から 2.7.2 では、いくつかのマイナーな修正が行われます。
また、DHH 自身が言ったように、Rails は、素晴らしいアイデアが生まれる限り、コアを 100% 変更することを常に望んでいます。したがって、2 から 3 へ、または 3 から 4 へと進むと、おそらく大きな変化の鐘が鳴るだろうと想像できます。
ライブラリは 3 つの方法で変更されます (3 つ以上の方法がありますが、ここに注目してください!)。
- 変更は実装の詳細のみであり、クライアント ソフトウェアには影響しません。
- この変更により新しい機能が追加される可能性がありますが、以前のバージョンに書き込まれたクライアント ソフトウェアとの互換性が保たれるようにする必要があります。
- この変更により、ライブラリのパブリック インターフェイスが変更され、古いソフトウェアとの互換性が失われる可能性があります。
RationalVersioningPolicy は、次のガイドラインを提供します。
バージョンは、ピリオドで区切られた 3 つの負でない整数で表されます (例: 3.1.4)。
最初の整数は「メジャー」バージョン番号、2 番目の整数は「マイナー」バージョン番号、3 番目の整数は「ビルド」番号です。
カテゴリ 1 の変更 (実装の詳細) は、ビルド番号を増やします。
カテゴリ 2 の変更 (下位互換性) は、マイナー バージョン番号を増やし、ビルド番号をリセットします。
カテゴリ 3 の変更 (非互換) は、メジャー ビルド番号を増やし、マイナー番号とビルド番号をリセットします。gem の「公開」リリースには、異なるバージョンが必要です。通常、これはビルド番号をインクリメントすることを意味します。つまり、開発者は一日中自分でビルドを生成できますが、公開リリースを行うとすぐにバージョンを更新する必要があります。
それでおしまい。それほど難しくありません。
さらに。この回答に興味がある人は、悲観的バージョン制約にも興味があるかもしれません