~>
gem 사양에서 버전 요구 사항 의 의미는 무엇입니까 ?
hanna-0.1.12는 [haml (~> 2.2.8)]에 따라 다릅니다.
~>
gem 사양에서 버전 요구 사항 의 의미는 무엇입니까 ?
hanna-0.1.12는 [haml (~> 2.2.8)]에 따라 다릅니다.
답변:
RubyGems 매뉴얼은 이것을 비관적 버전 제약 이라고 부릅니다 .
제약 조건으로 1.3
(2- 파트) 또는
3.5.6.2
(4- 파트)와 같은 n- 파트 버전 번호를 지정했다고 가정합니다 . 그런 다음 제약 조건을 충족하기 위해 버전 번호는 다음 조건을 모두 충족해야합니다.
처음 n-1 버전 번호의 일부는 처음 n-1 제약의 부품과 동일 (예를 들어 있어야합니다 1.x
또는 3.5.6.x
일치하지만, 0.x
또는 3.5.7.x
안) 및
버전 번호의 마지막 부분은보다 커야 또는 제약의 마지막 부분에 동일 (예를 들어 있어야 1.9999
와 3.5.6.2
일치하지만, 1.2
또는 3.5.6.1
하지 않습니다).
다시 말해
~> x 1 .x 2 .x 3 . … .x n-2 .x n-1 .x n
성냥
x 1 .x 2 .x 3 . … .x n-2 .x N-1 .Y, Y> X = N
이것을 "비관적"제약이라고 부르는 이유와 그것의 유스 케이스는 당신이라고 말하면 > x.y.z
낙관적이기 때문입니다. 당신은 여기서부터 영원히 API가 변하지 않을 것이라고 가정합니다. 물론 이것은 매우 대담한 가정입니다. 그러나, 대부분의 프로젝트는이 허용되는 경우에 대한 규칙이
이전 버전과의 호환성을 휴식 , 그리고 어떻게 그들이 때 자신의 버전 번호를 변경해야 할 브레이크 이전 버전과의 호환성을. 비관적 제약 조건을 사용하여 이러한 버전 번호 지정 규칙을 인코딩 할 수 있으므로 코드가 항상 계속 작동하도록 할 수 있습니다 (다른 프로젝트의 작성자가 실제로 자신의 규칙을 준수한다고 가정하면 안타깝게도 항상 그런 것은 아닙니다). ).
동일한 주 / 부 부분이있는 모든 버전과 일치합니다. 이것은이 경우 haml ~> 2.2.8이 2.2.x 버전과 일치 함을 의미합니다.
이것은 새로운 gem의 API 브레이킹 체인지가이 경우 hanna를 깨뜨릴 새로운 gem에 의존하지 않는지 확인하는 데 사용할 수 있습니다.
~> 2.0
과 (과) 의 차이를 이해하는 것이 중요합니다 ~> 2.0.0
-이전 경기는 2.0, 2.1, 2.2.7 및 3.0까지 (포함되지는 않음) 다른 모든 것. 후자는 2.0, 2.0.1, 2.0.999 및 2.1까지의 모든 것 (포함되지 않음)과 일치합니다.
~> 2.2.8
것 없는 대답 주장과 같은 "어떤 2.2.x의"버전과 일치하지만, X ≥ 8 IOW 만의 2.2.x 버전 : 대답은 확실히 잘못된와 접경 더욱 완전 최고에있다 오해의 소지가 있습니다.