Đó là một hạn chế phiên bản bi quan . RubyGems sẽ tăng chữ số cuối cùng trong phiên bản được cung cấp và sử dụng chữ số đó cho đến khi đạt đến phiên bản tối đa. Vì vậy, về mặt ~>0.8.5
ngữ nghĩa tương đương với:
gem "cucumber", ">=0.8.5", "<0.9.0"
Cách dễ dàng để nghĩ về điều đó là bạn không sao với việc chữ số cuối cùng tăng lên một số giá trị tùy ý, nhưng những chữ số đứng trước nó trong chuỗi không được lớn hơn những gì bạn đã cung cấp. Vì vậy ~>0.8.5
, bất kỳ giá trị nào cũng có thể chấp nhận được đối với chữ số thứ ba (5) với điều kiện là nó lớn hơn hoặc bằng 5, nhưng 0,8 đứng đầu phải là "0,8".
Bạn có thể làm điều này, ví dụ: nếu bạn nghĩ rằng phiên bản 0.9 sẽ thực hiện một số thay đổi đột phá, nhưng bạn biết toàn bộ loạt bản phát hành 0.8.x chỉ là các bản sửa lỗi.
Tuy nhiên, chỉ cần sử dụng ">=0.8.5"
sẽ chỉ ra rằng bất kỳ phiên bản nào sau (hoặc bằng) 0.8.5 đều được chấp nhận. Không có giới hạn trên.
~>
yêu cầu trong phiên bản .