루비 온 레일스 유지 보수 정책
레일스 프레임워크 지원은 새로운 기능, 버그 수정, 보안 문제, 심각한 보안 문제의 네 가지 그룹으로 나뉩니다. 이는 다음과 같이 처리됩니다. 보안 릴리스를 제외한 모든 버전은 X.Y.Z
형식입니다.
버전 관리
레일스는 semver의 변형된 버전을 따릅니다:
패치 Z
버그 수정만 포함되며, API 변경 및 새로운 기능은 없습니다. 보안 수정을 위해 필요한 경우는 예외입니다.
마이너 Y
새로운 기능이 포함되며, API 변경이 있을 수 있습니다(Semver의 주요 버전으로 사용됩니다). 호환성 문제가 있는 변경 사항은 이전 마이너 또는 주요 릴리스에서 사용 중단 알림과 함께 제공됩니다.
메이저 X
새로운 기능이 포함되며, API 변경이 있을 가능성이 높습니다. 레일스의 마이너 및 메이저 릴리스 간 차이는 호환성 문제의 정도이며, 특별한 경우에만 사용됩니다.
새로운 기능
새로운 기능은 메인 브랜치에만 추가되며 포인트 릴리스에서는 제공되지 않습니다.
버그 수정
최신 릴리스 시리즈에서만 버그 수정이 이루어집니다. 버그 수정은 일반적으로 메인 브랜치에 추가되며, 충분한 필요가 있는 경우 최신 릴리스 시리즈의 x-y-stable 브랜치로 백포트됩니다. x-y-stable 브랜치에 충분한 버그 수정이 추가되면 새로운 패치 릴리스가 빌드됩니다. 예를 들어, 이론적인 1.2.2 패치 릴리스는 1-2-stable 브랜치에서 빌드됩니다.
특별한 상황에서 코어 팀 멤버가 더 많은 시리즈를 지원하기로 동의하면, 지원되는 시리즈 목록에 포함됩니다.
지원되지 않는 시리즈의 경우, 버그 수정이 우연히 stable 브랜치에 포함될 수 있지만 공식 버전으로 릴리스되지 않습니다. 지원되지 않는 버전의 경우 Git을 사용하여 애플리케이션을 stable 브랜치에 연결하는 것이 좋습니다.
현재 포함된 시리즈: 7.2.Z
.
보안 문제
현재 릴리스 시리즈와 그 다음 가장 최근 시리즈에서 보안 문제가 발생할 경우 패치와 새로운 버전이 제공됩니다.
이러한 릴리스는 마지막으로 릴리스된 버전을 가져와 보안 패치를 적용하여 릴리스됩니다. 그런 다음 해당 패치가 x-y-stable 브랜치의 끝에 적용됩니다. 예를 들어, 이론적인 1.2.2.1 보안 릴리스는 1.2.2에서 빌드되어 1-2-stable 브랜치의 끝에 추가됩니다. 이는 보안 릴리스를 쉽게 업그레이드할 수 있음을 의미합니다.
보안 릴리스에는 직접적인 보안 패치만 포함됩니다. 보안 패치로 인한 비보안 관련 버그 수정은 릴리스의 x-y-stable 브랜치에 게시되며, 버그 수정 정책에 따라 새로운 gem으로만 릴리스됩니다.
보안 릴리스는 마지막 보안 릴리스 브랜치/태그에서 빌드됩니다. 그렇지 않으면 보안 릴리스에 호환성 문제가 포함될 수 있습니다. 보안 릴리스에는 애플리케이션을 안전하게 유지하는 데 필요한 변경 사항만 포함되어야 합니다.
현재 포함된 시리즈: 7.2.Z
, 7.1.Z
.
심각한 보안 문제
심각한 보안 문제의 경우 현재 주요 시리즈의 모든 릴리스와 이전 주요 시리즈의 마지막 릴리스에 패치와 새로운 버전이 제공됩니다. 보안 문제의 심각성은 코어 팀이 판단합니다.
현재 포함된 시리즈: 7.2.Z
, 7.1.Z
, 7.0.Z
, 6.1.Z
.
지원되지 않는 릴리스 시리즈
릴리스 시리즈가 더 이상 지원되지 않는 경우, 버그와 보안 문제를 직접 처리해야 합니다. 수정 사항을 백포트할 수 있지만 새로운 버전은 릴리스되지 않습니다. Git을 사용하여 애플리케이션을 stable 브랜치에 연결하는 것이 좋습니다. 자체 버전을 유지하는 것에 편하지 않다면 지원되는 버전으로 업그레이드해야 합니다.
npm 패키지
npm의 제한으로 인해 레일스에서 제공하는 npm 패키지의 보안 릴리스에 4번째 자리를 사용할 수 없습니다. 따라서 gem 버전 7.0.1.4
의 경우 npm 패키지는 7.0.1-4
로 버전이 지정됩니다.