To jest pessimistic version constraint. RubyGems zwiększy ostatnią cyfrę w dostarczonej wersji i użyje jej, dopóki nie osiągnie maksymalnej wersji. Więc ~>0.8.5
jest semantycznie równoważne:
gem "cucumber", ">=0.8.5", "<0.9.0"
w prosty sposób, aby myśleć o to, że jesteś w porządku z ostatnią cyfrą zwiększany do jakiejś arbitralnej wartości, ale te poprzedzające go w ciągu nie może być większa niż to, co podałeś. Tak więc dla ~>0.8.5
, każda wartość jest akceptowalna dla trzeciej cyfry (5) pod warunkiem, że jest większa lub równa 5, ale wiodąca wartość 0,8 musi wynosić "0,8".
Możesz to zrobić, na przykład, jeśli myślisz, że wersja 0.9 zamierza wprowadzić pewne zmiany łamania, ale wiesz, że cała seria wydań 0.8.x to tylko poprawki.
Jednak użycie po prostu ">=0.8.5"
może oznaczać, że dowolna wersja jest późniejsza niż (lub równa) 0.8.5. Nie ma górnej granicy.
Zobacz też: [Znaczenie '~>' w wymaganiu wersji] (http://StackOverflow.Com/q/3414337/#3416289). –
'~>' jest czasami nazywane "operatorem spermy". –
Czy możesz określić zakres dla wersji Ruby w swoim Gemfile? Na przykład. 'ruby" ~> 2.0 "' – Dennis