2010-07-15 6 views
8

तो रूबी 1.9 वास्तव में अच्छा है कि इसे स्वचालित रूप से rubygems की आवश्यकता होगी, और इसलिए जब आप require 'somegem' पर कॉल करते हैं तो पहले रूबीगैम की आवश्यकता होती है, यह काम करेगा, और यह आमतौर पर कमाल है।rubygems लोड किए बिना ruby1.9 को कॉल करने का कोई तरीका है?

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

लोडिंग रत्नों को छोड़ने के लिए, मैं इन शैल स्क्रिप्ट को चलाने के दौरान रूबी को बताने में सक्षम होना चाहता हूं। आदर्श रूप से, शेबांग लाइन में #!ruby --no-rubygems जैसे कुछ।

क्या ऐसी कोई बात है? या शायद एक संकलन विकल्प जो रूबी rubygems बताएगा मैन्युअल रूप से आवश्यक होना चाहिए?

उत्तर

5

हां, आप --disable-gems विकल्प का उपयोग कर सकते हैं।

ध्यान दें कि शेबैंग लाइन कार्यों में विकल्प गुजरने या नहीं, आपके ऑपरेटिंग सिस्टम पर निर्भर करता है। कुछ ऑपरेटिंग सिस्टम सभी पर पासिंग विकल्प का समर्थन नहीं करते हैं, कुछ केवल एक विकल्प या तर्क पास करने का समर्थन करते हैं।

इसलिए, यदि आप उदाहरण

#!/usr/bin/env ruby 

के लिए है तो यह बहुत संभावना नहीं है कि आप को समाप्त करने के विकल्प को संलग्न करने में सक्षम हो जाएगा है। यदि ओटीओएच आप इसे

#!/usr/local/bin/ruby --disable-gems 

फिर आपने अपनी स्क्रिप्ट में रुबी बाइनरी का स्थान कड़ी मेहनत की है।

और निश्चित रूप से ऑपरेटिंग सिस्टम हैं जो सभी पर शेबैंग लाइन की व्याख्या नहीं करते हैं। (सब के बाद, वे किसी भी मानक में निर्दिष्ट किया गया कभी नहीं, और भी ठीक से दर्ज नहीं किया जाता है।)

एक वैकल्पिक अपने खोल वातावरण में RUBYOPT वातावरण चर सेट करने के लिए और बस RUBYOPT सेट नहीं के साथ एक अलग वातावरण के लिए स्विच (होगा या अपने रूबी विकास के लिए -w, मेरा व्यक्तिगत पसंदीदा) पर सेट करें।

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

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