Ich sehe oft die folgende Notation (~>) in Gemfile.
gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"
Ich weiß, dass das Vorzeichen (> =) nur größer oder gleich ist, aber was bedeutet die (~>) Notation? Sind beide gleich oder haben sie einen signifikanten Unterschied?
~>
Versionsanforderung .~>
wird manchmal als "Spermienoperator" bezeichnet.ruby "~>2.0"
Antworten:
Das ist eine pessimistische Versionsbeschränkung . RubyGems erhöht die letzte Ziffer in der bereitgestellten Version und verwendet diese, bis eine maximale Version erreicht ist. Ist
~>0.8.5
also semantisch äquivalent zu:gem "cucumber", ">=0.8.5", "<0.9.0"
Die einfache Möglichkeit, darüber nachzudenken, besteht darin, dass Sie damit einverstanden sind, dass die letzte Ziffer auf einen beliebigen Wert erhöht wird, die in der Zeichenfolge davor stehenden Werte jedoch nicht größer sein können als die von Ihnen angegebenen. Somit
~>0.8.5
ist für die dritte Ziffer (die 5) jeder Wert akzeptabel, vorausgesetzt, er ist größer oder gleich 5, aber die führende 0,8 muss "0,8" sein.Sie können dies beispielsweise tun, wenn Sie der Meinung sind, dass die Version 0.9 einige wichtige Änderungen implementieren wird, Sie jedoch wissen, dass die gesamte Release-Serie 0.8.x nur Bugfixes enthält.
Eine einfache Verwendung
">=0.8.5"
würde jedoch bedeuten , dass jede Version, die später als (oder gleich) 0.8.5 ist, akzeptabel ist. Es gibt keine Obergrenze.quelle
~>0.9.2.3
unbegrenzt inkrementiert werden, die dritte jedoch nicht (dies würde v0.9.2.4 oder v0.9.2.23, aber nicht v0.9.3.0 ermöglichen). Wenn Sie in der Einschränkung nur 3 Ziffern angegeben haben, ist die vierte im Wesentlichen irrelevant - sie wird nur auf der Grundlage der ersten drei von Ihnen angegebenen Ziffern eingeschränkt (z. B.~>0.9.2
würde alles innerhalb einer 0.9.xy-Reihe akzeptiert, unabhängig davon, wasy
ist; die Einschränkung ist dass die 9 nicht erhöht werden kann).@millisami Sie können sogar Abhängigkeiten mit der gemspec hinzufügen, indem Sie die pessimistische Einschränkung wie folgt verwenden:
Wenn Sie nicht viel über die Edelsteinentwicklung wissen oder gerade erst damit anfangen, sind dies einige gute Referenzen:
quelle