Betekenis van tilde-groter-dan (~>) in versie-eis?

Wat is de betekenis van de ~>-versievereiste in de specificaties van de edelsteen?

hanna-0.1.12 hangt af van [haml (~> 2.2.8)]

Antwoord 1, autoriteit 100%

De RubyGems-handleiding noemt dit een
pessimistische versiebeperking.

Stel dat je een n-part versienummer hebt opgegeven, b.v. 1.3(2-delig) of
3.5.6.2(4-part) als de beperking. Om vervolgens aan de beperking te voldoen,
een versienummer moet aan beide volgende voorwaarden voldoen

  1. De eerste n-1 delen van het versienummer moeten identiek zijn aan de eerste n-1
    delen van de beperking
    (bijv. 1.xof 3.5.6.xkomt overeen, maar 0.xof 3.5.7.xniet) en

  2. Het laatste deel van het versienummer moet groter zijn dan of gelijk zijn aan de laatste
    deel van de beperking
    (bijv. 1.9999en 3.5.6.2komen overeen, maar 1.2of 3.5.6.1niet).

Met andere woorden

~> x1.x2.x3. … .xn-2.xn-1.xn

overeenkomsten

x1.x2.x3. … .xn-2.xn-1.y, y >= xn

De reden waarom dit een “pessimistische” beperking wordt genoemd, en ook de use case voor
het, is dat wanneer je gewoon > x.y.z, je bent optimistisch: je gaat ervan uit
dat vanaf nu, tot in de eeuwigheid, de API nooit zal veranderen. Deze
is natuurlijk een vrij gewaagde veronderstelling. De meeste projecten hebben echter regels over:
wanneer ze mogen
achterwaartse compatibiliteit breken,
en hoe ze hun versienummer moeten wijzigen wanneer ze doenachteruit breken
compatibiliteit. U kunt die versienummeringsregels coderen met behulp van een pessimistische
beperking, en dus kunt u er zeker van zijn dat uw code altijd zal blijven werken
(ervan uitgaande dat de auteur van het andere project zich daadwerkelijk aan zijn eigen project houdt)
regels, wat helaas niet altijd het geval is).


Antwoord 2, autoriteit 19%

Met andere woorden, je kunt dit symbool gebruiken om je edelsteen up-to-date te houden met alle kleine updates en te voorkomen dat je een grote update maakt die je app kan beschadigen.

Bijvoorbeeld “~> 1.2” zal je edelsteen updaten naar 1.3 (als zo’n versie wordt uitgebracht) maar het zal het niet updaten naar 2.0


Antwoord 3, autoriteit 13%

Ik denk dat bundelingsdocumentendit het beste kunnen samenvatten:

De specificatie ~> heeft een speciale betekenis, het best aangetoond door voorbeeld. ~> 2.0.3 is identiek aan >= 2.0.3 en < 2.1. ~> 2.1 is identiek aan >= 2.1 en < 3.0. ~> 2.2.beta komt overeen met prerelease-versies zoals 2.2.beta.12.


Antwoord 4

Het komt overeen met elke versie die hetzelfde grote / kleine deel heeft. Dit betekent in dit geval dat haml ~> 2.2.8 komt overeen met elke 2.2.x-versie.

Dit kan worden gebruikt om ervoor te zorgen dat een API-brekende wijziging in een nieuwe edelsteen niet resulteert in afhankelijkheid van die nieuwe maar gewijzigde edelsteen die in dit geval hanna zou breken.

Other episodes