रेल बंडल केवल उत्पादन स्थापित करता है


87

मैं अभी भी रेल / रूबी / बंडलर के लिए नया हूं और थोड़ा भ्रमित हूं।

हमारी config/application.rbफ़ाइल में यह बंडल सेगमेंट है:

if defined?(Bundler)         
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

और हमारे में Gemfileहम विभिन्न समूहों का उपयोग करते हैं, जैसे

group :development, :test do
  gem "rspec-rails", ">= 2.7.0", :group => [:development, :test]
  gem 'shoulda-matchers'
  gem 'watchr'
  gem 'spork', '~> 1.0rc'
  gem 'spectator'                          
  gem 'debugger'
  gem 'wirble'
end

लेकिन जब मैं दौड़ता हूं RAILS_ENV=production bundle install(या bundle install --deployment), यह अभी भी विकास / परीक्षण समूह से रत्न स्थापित करता है ...

ऐसा क्यों होता है या मैं इस काम को ठीक से कैसे कर सकता हूं?

जवाबों:


181

--withoutविकल्प पर एक नज़र डालें :

bundle install --without development test

डिफ़ॉल्ट रूप से Bundler सभी रत्नों को स्थापित करता है और आपका एप्लिकेशन उन रत्नों का उपयोग करता है जिनकी उसे आवश्यकता होती है। खुद बुंडलर को रेल और मौजूदा माहौल के बारे में कुछ नहीं पता।


3
मैं इसके बारे में जानता हूं --without, लेकिन यह बहुत ही सुरुचिपूर्ण लगता है, विशेष रूप से उन कॉन्फ़िगरेशन निर्देशों पर विचार करना config/application.rb(जो बिल्कुल इसे संबोधित करने वाले हैं) और इस उद्धरण पर भी विचार करना: रेल 3 बंडलर के समर्थन में पके हुए के साथ आता है।
जिंजालिम

2
बंडल इंस्टॉल कमांड रेल से पूरी तरह से स्वतंत्र है। यह सिर्फ आपके Gemfile में दिखता है, यह परवाह नहीं करता है कि आपके एप्लिकेशन को वास्तव में उल्लिखित कॉन्फ़िगरेशन में किन पुस्तकालयों की आवश्यकता है। वास्तव में, आप Bundler.require को छोड़ सकते हैं और किसी भी समूह से मैन्युअल रूप से lib की आवश्यकता कर सकते हैं। मैं सहमत हूँ, कि रेल बुंडलर के साथ इस मामले में बेहतर एकीकृत कर सकता है, लेकिन ऐसा नहीं है।
साइमन पेरपेलित्सा

2
समझा। इसलिए मुझे लगता है कि यह कहना उचित है कि रेल बंडलर (यानी config/application.rbऔर भी config/boot.rb) के बारे में जानता है , लेकिन बंडल को रेल के बारे में कुछ भी नहीं पता है ... यह केवल Gemfile पढ़ता है और उन रेल फ़ाइलों में से किसी का उपयोग नहीं करता है। मुझे लगता है कि सिक्का आखिरकार गिरा। आपकी सहायताके लिए धन्यवाद!
जिंजालिम

वास्तव में यह सुरुचिपूर्ण लगता है क्योंकि यह आपके Gemfile में 'समूहों' को छोड़कर है, आपके रेल एप्लिकेशन में वातावरण नहीं। मुझे पता है कि यह कहा गया है, लेकिन जब मैंने इसके बारे में इस तरह से सोचा तो यह मेरे लिए ज्यादा मायने रखता था।
जायदेल

1
निश्चित नहीं है कि यह ऐसा कुछ है जो पिछले चार वर्षों में बदल गया है, लेकिन तर्क एस के --withoutसाथ अलग होने वाले हैं :, न कि रिक्त स्थान। इसलिए मेरा मानना ​​है कि यह होना चाहिए bundle install --without development:test
जो फ्रीमैन

2

bundle-onlyमाणिक रत्न का उपयोग करने का एक वैकल्पिक उपाय है । इसका उपयोग इस प्रकार किया जा सकता है:

> gem install bundle-only
> bundle-only production

यह लाइब्रेरी आपके बंडलर कॉन्फ़िगरेशन या वृद्धि को प्रदूषित नहीं करती है Gemfile.lock; यह निर्मित विकल्प के लिए एक सरल विकल्प है bundle --without every other groupजो bundlerप्रदान करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.