2016-08-29 9 views
5

https://rubygems.org/gems/bcrypt/versions/3.1.11एक जेम रूबीजम्स में ~> और => प्रदान क्यों करता है?

पर bcrypt के लिए मणि इस प्रयोग

gem 'bcrypt', '~> 3.1', '>= 3.1.11' 

से पता चलता क्यों spermy निराशावादी ऑपरेटर के दो संस्करण हैं?

हम आम तौर पर अन्य जवाहरात

उत्तर

2

>= 3.1.11 एक "आशावादी" संस्करण बाधा है। यह कह रहा है कि 3.1.11 से सभी परिवर्तन काम करेंगे, लेकिन संस्करण 4.0.0 के लिए यह सच नहीं होगा।

~> 3.1 "निराशावादी" है। यह स्पष्ट रूप से उस संस्करण को शामिल करता है जो आपके कोड को तोड़ सकता है। यह मूल रूप से >= 3.1 और < 4.0 कह रहा है। लेकिन अगर आप ~> 3.1.1 था, यह >= 3.1.1 के बराबर हो जाएगा लेकिन कम से कम 3.2

आप नए पीछे की ओर-संगत संस्करणों के उपयोग की अनुमति चाहते हैं, लेकिन एक विशिष्ट बग फ़िक्स आप '~> 3.1', '>= 3.1.11' इस पर विस्तृत है की तरह एक यौगिक आवश्यकता उपयोग कर सकते हैं की जरूरत है http://guides.rubygems.org/patterns/#pessimistic-version-constraintयदि आप नए बैकवर्ड-संगत संस्करणों के उपयोग की अनुमति देना चाहते हैं, लेकिन एक विशिष्ट बग फिक्स की आवश्यकता है तो आप एक कंपाउंड आवश्यकता का उपयोग कर सकते हैं जैसे कि '~> 2.2', '>= 2.2.1'

3

'~> 3.1' के लिए सिर्फ एक संस्करण का उपयोग आवश्यक संस्करण 3.1.x या 3.2.x या 3.3.x या ... हो सकता है लेकिन 4.0 तक पहुँचने के लिए कभी नहीं का मतलब है।

'>= 3.1.11' का अर्थ काफी स्पष्ट है।

तो उन्हें एक साथ रखें, इसका मतलब है कि संस्करण 3.x.y हो सकता है जहां x >= 2 या x = 1 and y >= 11 हो सकता है।

हो सकता है कि इस अंकन अधिक स्पष्ट है:

gem 'bcrypt', '>= 3.1.11', '< 4' 
संबंधित मुद्दे