~>
मणि चश्मा में संस्करण की आवश्यकता का अर्थ क्या है ?
hanna-0.1.12 [haml (~> 2.2.8)] पर निर्भर करता है
~>
मणि चश्मा में संस्करण की आवश्यकता का अर्थ क्या है ?
hanna-0.1.12 [haml (~> 2.2.8)] पर निर्भर करता है
जवाबों:
RubyGems मैनुअल इसे एक निराशावादी संस्करण बाधा कहता है ।
मान लें कि आपने n-part संस्करण संख्या निर्दिष्ट की है, जैसे 1.3
(2-भाग) या
3.5.6.2
(4-भाग) बाधा के रूप में। फिर, बाधा को पूरा करने के लिए, एक संस्करण संख्या को निम्नलिखित दोनों स्थितियों को पूरा करना होगा
संस्करण संख्या का पहला n-1 भाग बाधा के पहले n-1 भागों के समान होना चाहिए (जैसे 1.x
या 3.5.6.x
मिलान, लेकिन 0.x
या 3.5.7.x
नहीं) और
संस्करण संख्या का अंतिम भाग बाधा के अंतिम भाग से अधिक या उसके बराबर होना चाहिए (जैसे 1.9999
और 3.5.6.2
मिलान, लेकिन 1.2
या 3.5.6.1
नहीं)।
दूसरे शब्दों में
~> x 1 .x 2 .x 3 । … .X n-2 .x n-1 .x n
माचिस
x 1 .x 2 .x 3 । ... .x n-2 .x n-1 .y, वाई> = एक्स n
इसका कारण "निराशावादी" बाधा कहा जाता है, और इसके लिए उपयोग का मामला भी है, जब आप बस कहते हैं > x.y.z
, आप आशावादी हो रहे हैं: आप मानते हैं कि यहाँ से बाहर, जब तक सभी अनंत काल तक, एपीआई कभी नहीं बदलेगा। यह निश्चित रूप से एक बहुत बोल्ड धारणा है। हालाँकि, अधिकांश प्रोजेक्ट्स में नियम होते हैं कि जब उन्हें बैकवर्ड कम्पेटिबिलिटी को तोड़ने की अनुमति दी जाती है
, और जब वे ब्रेक बैक कम्पैटिबिलिटी करते हैं तो उन्हें अपना वर्जन नंबर कैसे बदलना होगा । आप एक निराशावादी बाधा का उपयोग करते हुए उन संस्करण संख्या नियमों को एन्कोड कर सकते हैं, और इस तरह आप यह सुनिश्चित कर सकते हैं कि आपका कोड हमेशा काम करना जारी रखेगा (यह मानते हुए कि अन्य परियोजना के लेखक वास्तव में अपने स्वयं के नियमों का पालन करते हैं, जो दुर्भाग्य से हमेशा मामला होता है )।
दूसरे शब्दों में, आप इस प्रतीक का उपयोग अपने मणि को सभी छोटे अपडेट के साथ अपडेट रखने के लिए कर सकते हैं और एक बड़ा अपडेट करने से बच सकते हैं जो आपके ऐप को तोड़ सकता है।
उदाहरण के लिए "~> 1.2" आपके मणि को 1.3 तक अपडेट करेगा (यदि ऐसा कोई संस्करण जारी किया गया है), लेकिन यह इसे 2.0 में अपडेट नहीं करेगा
मुझे लगता है कि बंडल डॉक्स ने इसे सबसे अच्छा योग दिया:
विनिर्देशन ~> का एक विशेष अर्थ है, उदाहरण के लिए सबसे अच्छा दिखाया गया है। ~> 2.0.3> = 2.0.3 और <2.1 के समान है। ~> 2.1> = 2.1 और <3.0 के समान है। ~> 2.2.beta 2.2.beta.12 की तरह प्रीलेरेज़ संस्करणों से मेल खाएगी।
यह किसी भी ऐसे संस्करण से मेल खाता है जिसमें एक ही प्रमुख / मामूली हिस्सा है। इस मामले में इसका मतलब है कि haml ~> 2.2.8 किसी भी 2.2.x संस्करण से मेल खाएगा।
इसका उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि नए रत्न में एपीआई ब्रेकिंग परिवर्तन, उस नए लेकिन बदले हुए रत्न के आधार पर परिणाम नहीं देता है जो इस मामले में हन्ना को तोड़ देगा।
~> 2.0
और ~> 2.0.0
पूर्व मैचों 2.0, 2.1, 2.2.7, और अप करने के लिए सब कुछ (लेकिन सहित नहीं) 3.0 -। बाद के मैच 2.0, 2.0.1, 2.0.999 और बाकी सब कुछ (लेकिन शामिल नहीं) 2.1 तक मेल खाते हैं।
~> 2.2.8
होगा नहीं जवाब दावों के रूप में "किसी भी 2.2.x" संस्करण से मेल है, लेकिन एक्स ≥ 8. IOW के साथ ही 2.2.x संस्करण: इस सवाल का जवाब भी अधिक अधूरा सबसे अच्छे रूप में है, गलत और निश्चित रूप से की सीमा पर भ्रामक।