2009-07-11 7 views
6

आप कैसे निर्धारित कर सकते हैं कि "आवश्यकता" कथन के जवाब में कौन सा रूबीजम उपयोग किया जा रहा है? मणि जो मदद करने के लिए प्रतीत नहीं होता है।यह निर्धारित करना कि आप किस रूबीगेम का उपयोग कर रहे हैं

पृष्ठभूमि: प्रोजेक्ट हॉर्नस्बी-हर्बेरियम-पार्सर के लिए, मैं मणि रू का उपयोग कर रहा हूं।

मैंने जिथब मणि एचएमसीगोवन-रू का उपयोग किया, क्योंकि उस समय यह रू के रूबीफोर्ज संस्करण से अधिक हालिया था। मैंने runcoderun पर कोड का परीक्षण करने की कोशिश की, और यह असफल रहा क्योंकि इसमें roo का कोई संस्करण नहीं है। इस समय तक, roo के नए संस्करण दोनों github और rubyforge पर उपलब्ध थे।

मैंने फैसला किया कि मैं यह भी देख सकता हूं कि रूबीफोर्ज का नवीनतम संस्करण मेरे कोड के लिए काम करता है, क्योंकि मुझे लगता है कि रूबीफोर्ज अधिक आधिकारिक, आधिकारिक और गीथब कांटे से स्थिर है। एक बार मुझे यकीन है कि rubyforge संस्करण मेरे कोड के साथ काम करता है, अगर मैं इसे अपने सिस्टम पर इंस्टॉल कर सकता हूं तो मैं रनकोडरन से अच्छी तरह से पूछूंगा।

I sudo gem स्थापित roo, और मेरे रत्नों में अब "एचएमसीगोवन-रू (1.3.5)" और "रू (1.3.6)" शामिल है, और हॉर्नस्बी-हर्बेरियम-पार्सर के लिए अभी भी परीक्षण चल रहा है। मुझे पता है कि rubyforge संस्करण हाल ही में स्थापित किया गया था, यह चाहिए परीक्षण में इस्तेमाल किया जा रहा है, लेकिन मैं इसे सत्यापित करने में सक्षम होना चाहता हूं।

gem which roo 

मदद नहीं था, क्योंकि यह मुझे

(checking gem hmcgowan-roo-1.3.5 for roo) 
/usr/lib/ruby/gems/1.8/gems/hmcgowan-roo-1.3.5/lib/roo.rb 

जो मुझे लगता है गलत जवाब है दे दी है।

अद्यतन: मैं मणि जो करते हुए कहा कि मैं अभी भी hmcgowan-रू-1.3.5 का उपयोग कर रहा के साथ दोनों

$:.detect {|dir| dir =~ /roo/} 

और

puts Roo::VERSION::STRING 

दोनों इस बात से सहमत इस्तेमाल किया।

+0

आप या तो सीएलआई से या रूबी के भीतर से चाहते हैं, दोनों ठीक है? –

+0

समान लेकिन रेल के लिए (इस प्रकार बंडलर का अनुमान लगाता है): http://stackoverflow.com/questions/1621405/how-to-tell-which-version-of-a-gem-a-rails-app-is-using –

उत्तर

3

पहले, rubygems उच्चतम संस्करण संख्या मणि, नहीं सबसे हाल ही में स्थापित लोड होगा। तो आपको यहाँ आरयू 1.3.6 मिलना चाहिए।

इसके अलावा, मैं संस्करण निरंतर देखने के लिए दूसरा गेरिट का सुझाव देता हूं। उदाहरण के लिए, मैंने अभी rmagick लोड किया है और एक निरंतर मैजिक :: संस्करण है। एक और उदाहरण ओपन 4 :: संस्करण है।

>> require 'open4' 
=> true 

>> $:.detect {|dir| dir =~ /\/open4-([^\/]*)\//} 
=> "/Library/Ruby/Gems/1.8/gems/open4-0.9.6/bin" 

>> $1 
=> "0.9.6" 
+1

I $ के बारे में नहीं सोचा था, धन्यवाद। हालांकि, नियमित अभिव्यक्ति के साथ, अगर किसी ने जॉन्डो-ओपन 4 बनाया, तो यह मेल नहीं खाएगा। –

+0

सच, सच है। यही कारण है कि मैंने इसे 'हैकी' कहा :) लेकिन शायद आप इसे थोड़ा और ठीक कर सकते हैं। –

-1

सबसे आसान तरीका अनइंस्टॉल करना होगा और फिर रूबीगैम्स को अलग-अलग पुनर्स्थापित करना होगा। मुझे इतना यकीन नहीं है कि गिटूब के बारे में आपकी धारणा स्थिर स्रोत नहीं है, इसलिए यह सटीक है।

1

मणि सूची xxx यह चूक नवीनतम संस्करण लोड करने के लिए:

हालांकि नहीं सब जवाहरात एक संस्करण निरंतर, तो एक fallback आप कुछ hacky की तरह कर सकता है के रूप में की है।

1

आप उपयोग कर सकते हैं Gem::VERSION

require 'rubygems'; puts Gem::VERSION 

है कि एक गहरे लाल रंग का कार्यक्रम है, जो काफी उपयोगी है आप यह सुनिश्चित करना चाहते हैं, तो में है कि सभी मशीनों accrossing rubygems के समान संस्करण के तहत अपने आवेदन (जैसे बंडलर Gemfile)

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