2011-10-26 12 views
69

एक बंडल अपडेट करने के बाद, आपके पास कुछ रत्न होंगे जो अप्रचलित हो सकते हैं - क्योंकि उस मणि का एक नया संस्करण स्थापित किया गया है। bundle निष्पादन योग्य i.e. bundle clean के तहत ऐसा कोई आदेश नहीं है। इन अप्रचलित रत्नों से कैसे छुटकारा पाता है?रेल बंडल क्लीन

यह मेरे रेल ऐप में स्लग आकार को कम करने का प्रयास है।

उत्तर

113

यदि आप बंडलर 1.1 का उपयोग कर रहे हैं या बाद में आप bundle clean का उपयोग कर सकते हैं, जैसा कि आपने कल्पना की थी कि आप कर सकते थे। यदि आप bundle install --path का उपयोग कर रहे हैं तो यह अनावश्यक है (बंडलर आपके द्वारा निर्दिष्ट स्थान को प्रबंधित करता है - इसलिए पुरानी रत्नों को हटाने की ज़िम्मेदारी लेता है), लेकिन यदि आपने सिस्टम रत्न के रूप में रत्न स्थापित करने के लिए बंडलर का उपयोग किया है तो bundle clean --force किसी भी सिस्टम को हटा देगा आपके Gemfile द्वारा रत्न की आवश्यकता नहीं है। अंधेरे से स्पष्ट चेतावनी: ऐसा न करें अगर आपके पास अन्य ऐप्स हैं जो सिस्टम रत्नों पर भरोसा करते हैं जो आपके जेमफाइल में नहीं हैं!

पैट शॉनेसनेस का bundle clean and other new additions in bundler 1.1 का अच्छा विवरण है।

+20

आरवीएम का उपयोग करने वालों के लिए, ध्यान दें कि 'बंडल क्लीन - फोर्स' आपके वैश्विक रत्नों को नहीं छूता है, लेकिन केवल आपके वर्तमान रत्न में ही। तो 'बंडल क्लीन - फोर्स' उसी परिणाम का उत्पादन करता है और तेज़ी से 'आरवीएम रत्न खाली' होता है जिसके बाद 'बंडल इंस्टॉल' होता है। –

+15

अस्वीकरण: यदि आप सावधान नहीं हैं तो "बंडल क्लीन-फोर्स" बड़ी संख्या में रत्नों को उड़ा सकता है। यह इस प्रतिक्रिया की पहली पंक्ति होनी चाहिए ... खासकर जब से उसके पास बहुत सारे वोट हैं। सावधान रहे! – jerrylroberts

21

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

चूंकि बंडलर प्रोजेक्ट-प्रति-प्रोजेक्ट मणि वर्जनिंग टूल होने का मतलब है, यह bundle clean कमांड प्रदान नहीं करता है। ऐसा करने से अन्य परियोजनाओं से जुड़े रत्नों को हटाने की संभावना भी होगी, जो वांछनीय नहीं होगा। इसका मतलब है कि बंडलर शायद आपके मणि निर्देशिका को प्रबंधित करने के लिए उपयोग करने का गलत टूल है। मेरी व्यक्तिगत सिफारिश कुछ परियोजनाओं या रूबी संस्करणों में अपने रत्नों को सैंडबॉक्स करने के लिए आरवीएम जेमेट्स का उपयोग करना होगा।

+40

gemset दूर करने के लिए कोई ज़रूरत नहीं, तो आप सिर्फ टाइप कर सकते हैं 'rvm gemset खाली gemset_name' और फिर चला लें 'बंडल स्थापित' । – JAG

+0

ग्रेट स्पष्टीकरण। यह जानकर कि बंडलर मदद करता है। धन्यवाद। – Volte

+9

बंडल क्लीन - फोर्स नौकरी करेगा – sailor

1

मुझे लगता है कि आप vendor/bundle में रत्न स्थापित करते हैं? यदि हां, तो क्यों न केवल सभी रत्न हटाएं और एक साफ bundle install क्यों करें?

+0

मेरी विक्रेता निर्देशिका केवल संपत्तियों और स्थापित प्लगइन का ट्रैक रखती है। मैं रेल पर हूं 3.1 – iGbanam

+0

फिर अप्रयुक्त रत्नों को हटाने का क्या कारण है यदि उन्हें तैनाती पर कॉपी नहीं किया गया है? वे उस जगह को नहीं लेते हैं। –

+0

मैं इस रेल ऐप को इंट्रानेट पर तैनात कर रहा हूं; जिसका अर्थ है कि मैं स्थानीय रूप से फाइलों और पर्यावरण को संभालता हूं। यदि आप किसी भी समाधान के बारे में जानते हैं तो मैं इसका उपयोग कर सकता हूं, कृपया साझा करें। – iGbanam

0

बस अपने जेमफाइल से अप्रचलित रत्न हटा दें। यदि आप हेरोोकू के बारे में बात कर रहे हैं (आपने इसका जिक्र नहीं किया है) तो स्लग को प्रत्येक नई रिलीज को संकलित किया गया है, बस उस फ़ाइल की वर्तमान सामग्री का उपयोग कर।

+0

यह जरूरी नहीं है कि उसके लिए। मैं रेल ऐप के आकार को कम करना चाहता हूं। – iGbanam

10

ईमानदारी से, मुझे बंडलर परिपत्र निर्भरताओं के साथ समस्याएं थीं और जाने का सबसे अच्छा तरीका rm -rf .bundle है। खुद को सिरदर्द बचाओ और हथौड़ा का उपयोग करें।

+0

वास्तव में मेरी मदद नहीं की, एक ही त्रुटि। – holms

+1

मुझे इसे "मुझे तैनाती के साथ बंडल इंस्टॉल करना होगा" के बारे में मुझे बगैर रोकने के लिए ऐसा करना था। धन्यवाद – Kevin

+2

विचार के लिए धन्यवाद। हालांकि मेरे लिए, एक बड़ा हथौड़ा का उपयोग करने में मदद की। 'आरवीएम implode --force' और फिर आरवीएम पुनः स्थापित करें – Ryan

30

यदि आप आरवीएम का उपयोग कर रहे हैं तो आप वर्तमान जेमसेट के लिए rvm gemset empty का उपयोग कर सकते हैं - यह आदेश वर्तमान रत्न के लिए स्थापित सभी रत्नों को हटा देगा (रत्न स्वयं ही जगह में रहेगा)। फिर रत्नों के वास्तविक संस्करण स्थापित करने के लिए bundle install चलाएं। यह भी सुनिश्चित करें कि rvm gemset empty के दौरान आप ऐसे सामान्य रत्नों को रेक, बंडलर और इतने पर नहीं हटाते हैं (यदि यह मामला है तो bundle install से पहले उन्हें gem install के माध्यम से मैन्युअल रूप से इंस्टॉल करें)।

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