~>
Gem özelliklerinde sürüm gereksiniminin anlamı nedir ?
hanna-0.1.12, [haml (~> 2.2.8)] değerine bağlıdır
~>
Gem özelliklerinde sürüm gereksiniminin anlamı nedir ?
hanna-0.1.12, [haml (~> 2.2.8)] değerine bağlıdır
Yanıtlar:
RubyGems kılavuzu buna bir kötümser bir sürüm kısıtlaması olarak adlandırır .
N parçalı bir sürüm numarası belirttiğinizi varsayın, örneğin 1.3
(2 parçalı) veya
3.5.6.2
(4 parçalı) kısıtlama olarak. Ardından, kısıtlamayı yerine getirmek için bir sürüm numarası aşağıdaki koşulların her ikisini de karşılamalıdır
Sürüm numarasının ilk n-1 bölümü, kısıtlamanın ilk n-1 bölümüyle aynı olmalıdır (ör. 1.x
Veya 3.5.6.x
eşleşiyor, ancak 0.x
veya 3.5.7.x
yok) ve
Sürüm numarasının son kısmı, kısıtlamanın son kısmına eşit veya ondan büyük olmalıdır (ör. 1.9999
Ve 3.5.6.2
eşleşiyor, ama 1.2
veya3.5.6.1
da değil).
Başka bir deyişle
~> x 1 .x 2 .x 3 . … .X n-2 .x n-1 .x n
maçlar
x 1 .x 2 .x 3 . … .X n-2 .x n-1 .y, y> = x n
Buna "kötümser" kısıtlama denmesinin ve aynı zamanda kullanım durumunun sebebi, sadece söylediğinizde > x.y.z
iyimser olmanızdır: buradan sonra, sonsuza kadar API'nin asla değişmeyeceğini varsayarsınız. Bu elbette oldukça cesur bir varsayımdır. Ancak, çoğu projelerin onlar izin verildiğinde ilgili kurallara sahip
geriye doğru uyumluluk kırmak ve nasıl onlar ne zaman kendi sürüm numarasını değiştirmek zorunda yapmak mola geriye uyumluluk. Bu sürüm numaralandırma kurallarını kötümser bir kısıtlama kullanarak kodlayabilirsiniz ve böylece kodunuzun her zaman çalışmaya devam edeceğinden emin olabilirsiniz (diğer projenin yazarının aslında kendi kurallarına bağlı olduğunu varsayarsak, ne yazık ki durum her zaman böyle değildir) ).
Başka bir deyişle, cevherinizi tüm küçük güncellemelerle güncel tutmak ve uygulamanızı bozabilecek büyük bir güncelleme yapmaktan kaçınmak için bu sembolü kullanabilirsiniz.
Örneğin "~> 1.2" geminizi 1.3'e güncelleyecektir (eğer böyle bir sürüm yayınlanmışsa) ancak 2.0'a güncellemeyecektir.
Bence paket dokümanları bunu en iyi şekilde özetliyor:
~> Belirtecinin en iyi örnekle gösterilen özel bir anlamı vardır. ~> 2.0.3,> = 2.0.3 ve <2.1 ile aynıdır. ~> 2.1,> = 2.1 ve <3.0 ile aynıdır. ~> 2.2.beta, 2.2.beta.12 gibi yayın öncesi sürümlerle eşleşecektir.
Aynı büyük / küçük kısma sahip herhangi bir sürümle eşleşir. Bu, bu durumda haml ~> 2.2.8'in herhangi bir 2.2.x sürümüyle eşleşeceği anlamına gelir.
Bu, yeni bir cevherde bir API kırma değişikliğinin, bu durumda hanna'yı bozacak yeni ancak değiştirilmiş cevhere bağlı olarak sonuçlanmamasını sağlamak için kullanılabilir.
~> 2.0
ve ~> 2.0.0
eski maçlar 2.0, 2.1, en fazla başka 2.2.7, ve her şey (ama hariç) 3,0 -. Sonuncusu 2.0, 2.0.1, 2.0.999 ve 2.1'e kadarki (ancak dahil olmayan) her şeyle eşleşir.
~> 2.2.8
olacak değil cevap iddia ettiği gibi "herhangi 2.2.x" sürümü eşleşir ancak x ≥ 8. IOW sadece 2.2.x sürümleri: cevabı kesinlikle yanlış ve sınırındaki, hatta daha tamamlanmamış iyi olan yanıltıcı.