2016-08-21 7 views
10

मेरी Gemfile में मैंबंडलर के साथ, यह बताने का सबसे अच्छा तरीका क्या है कि एक मणि "आवश्यक" है?

group :test do 
    gem 'rspec-core', require: false 
end 

है वहाँ अगर test समूह बंडल कर दिया गया है को देखने के लिए एक आसान तरीका है कहो? (जैसे, इस मामले में bundle को --without test के साथ या बिना कहा जा सकता है)।

मैं एक नहीं मिल सकता है, इसलिए मैं या नहीं, rspec-core requirable है की तलाश शुरू कर, और कुछ स्पष्ट समाधान पाया:

Bundler.definition.index.search("rspec-core") 
# or 
Gem.loaded_specs["rspec-core"] 

यदि मणि requirable है निर्धारित करने के लिए सबसे अधिक स्थिर एपीआई क्या है?

+1

क्या आप यह पूछने के लिए कह रहे हैं कि एक मणि "आवश्यक" है या यदि किसी समूह की आवश्यकता है? – user2977636

+0

मैं पूछ रहा हूं कि एक मणि "आवश्यक" है, मैंने संदर्भ देने के लिए समूहों के बारे में पूछा। –

+0

यदि आप जिस मणि को खोज रहे हैं, वह बंडलर का उपयोग करें, जो स्पष्ट रूप से बंडल की निर्भरता हो सकता है। रत्न फ़ाइल को कभी भी बंडल संदर्भ के बाहर बुलाया जा सकता है, तो मणि का प्रयोग करें। –

उत्तर

0

मैं आगे बढ़ने जा रहा हूं और कहता हूं कि Gem.loaded_specs बंडलर के माध्यम से जाने से अधिक विश्वसनीय है; मैंने बंडलर 1.12.5 के साथ एक परिस्थिति की खोज की जहां मेरे पास without पर समूह में से एक में गिटहब से एक मणि है, यह Bundler.definition.index.search का कारण को गिटहब से मणि का हवाला देते हुए बताता है कि मैं जानबूझकर बंडल नहीं कर रहा हूं।

3

जब एक रेल एप्लिकेशन यह उत्पन्न होता है आम तौर पर एक लाइन निर्धारित करने के लिए समूह की आवश्यकता के लिए Rails.env का उपयोग करता है भी शामिल है (यह आवश्यकता होती है की कोशिश कर रहा है और LoadError बचाव के बिना)। इसे इस Bundler.require(:default, Rails.env) की तरह दिखना चाहिए। यह आमतौर पर एक रेल ऐप के प्रारंभ में होता है। यहाँ कुछ कोड है कि करता है का एक टुकड़ा है कि:

class Rails::Boot 
    def run 
    load_initializer 

    Rails::Initializer.class_eval do 
     def load_gems 
     @bundler_loaded ||= Bundler.require :default, Rails.env 
     end 
    end 

    Rails::Initializer.run(:set_load_path) 
    end 
end 

तो अगर आप Rails.env का परीक्षण यह परीक्षण समूह में सभी जवाहरात की आवश्यकता होगी।

+0

मेरे प्रश्न में असंगतता को इंगित करने के लिए धन्यवाद। मैंने इसे स्पष्ट करने के लिए अद्यतन किया है कि मैं खुद से पूछ रहा था कि समूह की आवश्यकता है, लेकिन क्या यह बंडल किया गया है। –

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

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