2011-03-02 17 views
116

रूबी मणि depenencies के संदर्भ में ~> क्या मतलब है?रुबी मणि निर्भरताओं में tilde-than-than (~>) का अर्थ क्या है?

उदाहरण के लिए, जब RubyMine IDE में एक विरासत परियोजना खोलने, मैं इस संदेश

 
Gems required for project are not attached: 
arel (~> 2.0.2), 
rspec-expectation (~> 2.5.0)... 

मैंने देखा है इस टिल्ड-अधिक से अधिक रूबी दुनिया में कहीं और संकेतन (यह विशिष्ट नहीं है मिल रूबीमाइन के लिए)। क्या इस ऑपरेटर के पास अजीब-ध्वनि से अधिक tilde-more के अलावा कोई नाम है?

+0

@ जोर्ग पर बग/स्थिरता सुधार होने की उम्मीद की जाएगी, डुप्लिकेट को इंगित करने के लिए धन्यवाद। मैंने अपना प्रश्न बंद करने के लिए वोट दिया है। मैंने पाठ खोज में सहायता के लिए 'tilde-more-than' शब्दों को शामिल करने के लिए अन्य प्रश्न के शीर्षक को भी संपादित किया है। – jwfearn

+3

मैंने अब इस ऑपरेटर को "ट्विडल-वक्का", "अनुमानित संस्करण", और "निराशावादी संस्करण" (http://rubyrogues.com/045-rr-bundler-with-andre-arko/) – jwfearn

+1

कहा है। "हैश रॉकेट" ('=>') के विपरीत, इसे "स्क्विग रॉकेट" कहते हैं। –

उत्तर

164

इसका मतलब है "अंतिम अंक के बराबर या उससे अधिक", उदाहरण के लिए ~> 2.3 का अर्थ है "2.3 के बराबर या 2.3 से अधिक, लेकिन 3.0 से कम", जबकि ~> 2.3.0 का अर्थ है "2.3.0 के बराबर या 2.3.0 से अधिक, लेकिन 2.4.0 से कम"।

आप इसे "लगभग अधिक से अधिक" के रूप में उच्चारण कर सकते हैं।

§ Pessimistic version constraint

+6

** लगभग ** से अधिक! इससे बहुत अधिक अर्थ होता है - "~" का मतलब "लगभग" और '>' से अधिक "से अधिक" है। मैंने हमेशा सोचा था कि '~>' एक तीर की तरह दिखना था, और वास्तव में प्रतीक की विशेष पसंद को समझ में नहीं आया ... सफलता। – GMA

1

यह किसी भी कम संस्करण के बराबर या अधिक से अधिक है, लेकिन नहीं एक प्रमुख संस्करण लाने का मतलब है।

इसलिए उदाहरण arel (~> 2.0.2) के लिए, (यदि उपलब्ध) संस्करणों

  • 2.0.2
  • 2.0.3
  • 2,0 का प्रयोग करेंगे।? (जब तक? है> = 2)

लेकिन यह 2.1 का उपयोग नहीं करेगा।

2
इंटरनेट

एक RubyGem निर्भरता वाक्य रचना "~> 1.4.37", इसका मतलब है कि का उपयोग करता है के अनुसार

"1.4.37 को बराबर या उससे अधिक एक संस्करण है, लेकिन नहीं 1.5 या उच्चतर।" 1

दूसरे शब्दों में, आप
arel2.1 > version >= 2.0.2 हो सकता है और
rspec-expectation2.6 > version >= 2.5.0 हो सकता है के लिए।

1

इसका मतलब यह है कि आप संस्करण 2.0.2 या उच्चतम वाले मणि की अपेक्षा कर रहे हैं, लेकिन arel (~> 2.0.2) के मामले में 2.1 नहीं है क्योंकि यह मामूली संशोधन में सिंटैक्स परिवर्तनों को तोड़ने के लिए नहीं माना जाता है। तो arel 2.0.3 से 2.0.2

संबंधित मुद्दे