रेल के भीतर से माणिक संस्करण का निर्धारण करें


82

क्या यह निर्धारित करने का एक तरीका है कि रूबी का कौन सा संस्करण रेल के भीतर से चल रहा है (या तो वेब पर या इसके माध्यम से script/console)? मेरे पास रूबी 1.8.6 स्थापित है, लेकिन मैंने रूबी एंटरप्राइज संस्करण 1.8.7-20090928 भी स्थापित किया है और यह सुनिश्चित करना चाहता हूं कि यह सही स्थापना का उपयोग कर रहा है।

जवाबों:


166

टॉप-लेवल कॉन्स्टेंट का उपयोग करें

RUBY_VERSION

अन्य उपयोगी शीर्ष-स्तरीय स्थिरांक हैं

RUBY_PATCHLEVEL
RUBY_PLATFORM
RUBY_RELEASE_DATE

यहाँ एक irb सत्र है:

irb(main):001:0> RUBY_VERSION
=> "1.8.7"

12

निरंतर RUBY_VERSION आज़माएं। मैं यह निर्धारित करने के लिए बड़े पैमाने पर उपयोग करता हूं कि मैं 1.8 या JRuby के नीचे चल रहा हूं।

इसके अलावा, यदि आप उत्पादन मोड में नहीं हैं, तो आप URL "/ रेल / सूचना / गुण" को दबाकर एक त्वरित जांच कर सकते हैं


10

RUBY_VERSION स्थिरांक और दोस्तों के अलावा आप कॉन्फिगर :: CONFIG भी देख सकते हैं। इस हैश में न केवल संस्करण संख्याएं शामिल हैं, बल्कि बाइनरी के पथ की तरह अन्य उपयोगी रनटाइम जानकारी भी है, होस्टनाम, ...


धन्यवाद, मैं रूबी 2.0 और रेल 4.0 के लिए 'पुट RbConfig.ruby' का उपयोग करता हूं और यह '
/usr/local/rvm/rubies/ruby-2.0.0-p247-bin-ruby

9

RUBY_VERSIONदूसरों द्वारा बताए अनुसार उपयोग करें ।

फिर आप Gem::Versionसंस्करण स्ट्रिंग तुलना करने के लिए उपयोग कर सकते हैं :

require 'rubygems' # Only needed for ruby pre-1.9.0 but it's safe for later versions (evaluates to false).
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('1.9.0')
    extend DL::Importable                                    
else                                                         
    extend DL::Importer                                      
end                                                          

काश यह उत्तर वहाँ होता - stackoverflow.com/q/11819525/322020 - लेकिन मैं इसे स्थानांतरित नहीं कर सकता इसलिए मैं आपसे कहता हूँ कि आप इसे हटा दें और इसे वहाँ पोस्ट करें।
नकीलोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.