2009-05-23 9 views
25

मेरे पास एक कस्टम रूबी लाइब्रेरी निर्देशिका है जिसे मैं रूबी के निष्पादित होने पर रूबी के लोड पथ में स्वचालित रूप से जोड़ना चाहता हूं। मुझे पता है कि मैं रूबी के लिए आईआई विकल्प का उपयोग कर सकता हूं, लेकिन मुझे आश्चर्य है कि अगर पर्यावरण परिवेश की तरह कुछ ऐसा है जो मैं सेट कर सकता हूं जो वैश्विक रूप से रूबी के लोड पथ को निर्धारित करेगा।रूबी लोड पथ को बाहरी रूप से सेट करना

एक तरफ, मेरा उच्च स्तरीय कार्य एक लिनक्स बॉक्स पर रूबी जेम्स को स्थापित करना है जहां मेरे पास रूट नहीं है, इसलिए मुझे एक गैर-मानक स्थान में रूबी लोड पथ होना चाहिए। मैंने http://rubygems.org/read/chapter/3#page83 ("उपयोगकर्ता निर्देशिका में रूबीजम्स इंस्टॉल करना" पर दिशानिर्देशों के अनुसार रुबीजम्स इंस्टॉल किया है, लेकिन मणि कमांड गैर मानक लोड पथ नहीं उठा रहा है। हो सकता है कि मैं यहाँ कुछ स्पष्ट याद कर रहा हूं और चीजों को अपने लिए कठिन बना रहा हूं?

उत्तर

36

पिकैक्स पुस्तक से Ruby and its world अध्याय का प्रयास करें, विशेष रूप से पर्यावरण चर पर अनुभाग। अंश:

RUBYLIB 
    Additional search path for Ruby programs ($SAFE must be 0). 
DLN_LIBRARY_PATH 
    Search path for dynamically loaded modules. 
RUBYLIB_PREFIX 
    (Windows only) Mangle the RUBYLIB search path by adding this 
    prefix to each component. 
+3

RUBYLIB ने चाल की। मुझे यकीन नहीं है कि क्यों गुगलिंग का एक घंटा इस जानकारी को खोदने में सक्षम नहीं था। धन्यवाद! –

4

यकीन है कि आप काम करने के लिए gem आदेश के लिए अपने $PATH में स्थापित bin निर्देशिका रखा है सुनिश्चित करें। इसे RUBYLIB को स्वयं संशोधित करना चाहिए, लेकिन यदि नहीं, तो इसे ठीक करने के लिए Martin's answer आज़माएं।

फिर, आप अपने मणि घर (जहां रत्नों को स्थापित करने वाले रत्नों को संग्रहीत किया जा सकता है) स्थानीय हो सकता है।

बस $GEM_HOME का उपयोग करें (या अपने ~/.gemrc में चीजें सेट करें) और जांचें कि सब कुछ gem environment के साथ लिया गया है।

 
% mkdir ~/.gems 
% export GEM_HOME=~/.gems 
% gem help environment 

Usage: gem environment [arg] [options] 

    Common Options: 
    -h, --help      Get help on this command 
    -V, --[no-]verbose    Set the verbose level of output 
    -q, --quiet      Silence commands 
     --config-file FILE   Use this config file instead of default 
     --backtrace     Show stack backtrace on errors 
     --debug      Turn on Ruby debugging 


    Arguments: 
    packageversion display the package version 
    gemdir   display the path where gems are installed 
    gempath   display path used to search for gems 
    version   display the gem format version 
    remotesources display the remote gem servers 
      display everything 

    Summary: 
    Display information about the RubyGems environment 

    Description: 
    The RubyGems environment can be controlled through command line arguments, 
    gemrc files, environment variables and built-in defaults. 

    Command line argument defaults and some RubyGems defaults can be set in 
    ~/.gemrc file for individual users and a /etc/gemrc for all users. A gemrc 
    is a YAML file with the following YAML keys: 

     :sources: A YAML array of remote gem repositories to install gems from 
     :verbose: Verbosity of the gem command. false, true, and :really are the 
       levels 
     :update_sources: Enable/disable automatic updating of repository metadata 
     :backtrace: Print backtrace when RubyGems encounters an error 
     :bulk_threshold: Switch to a bulk update when this many sources are out of 
         date (legacy setting) 
     :gempath: The paths in which to look for gems 
     gem_command: A string containing arguments for the specified gem command 

    Example: 

     :verbose: false 
     install: --no-wrappers 
     update: --no-wrappers 

    RubyGems' default local repository can be overriden with the GEM_PATH and 
    GEM_HOME environment variables. GEM_HOME sets the default repository to 
    install into. GEM_PATH allows multiple local repositories to be searched 
    for 
    gems. 

    If you are behind a proxy server, RubyGems uses the HTTP_PROXY, 
    HTTP_PROXY_USER and HTTP_PROXY_PASS environment variables to discover the 
    proxy server. 

    If you are packaging RubyGems all of RubyGems' defaults are in 
    lib/rubygems/defaults.rb. You may override these in 
    lib/rubygems/defaults/operating_system.rb 
2

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

+1

आरवीएम के साथ एक कस्टम स्थान पर लाइब्रेरी कैसे जोड़ें? –

+0

मुझे नहीं लगता कि यह ओपी प्रश्न का उत्तर देता है। – Raj

+0

इस उत्तर को 4 अपवॉट कैसे प्राप्त हुए एक अलग SO प्रश्न होना चाहिए –

0

धन्यवाद! मैंने minitest के साथ एक विशिष्ट/विशेष/एकल परीक्षण विधि चलाने के लिए @MartinCarpenter's solution का उपयोग किया।

RUBYLIB=test ruby test/user_test.rb --name test_create 

मैं $LOAD_PATH क्योंकि user_test.rb कॉल require 'test_helper' को test जोड़ने lib/test_helper.rb लोड करने के लिए: जहां मैं सामान्य रूप से Rake::TestTask साथ $LOAD_PATH को test निर्देशिका जोड़ने के लिए, जैसे, t.libs << 'test', मैं कमांड लाइन के साथ यह करने के लिए है, इसलिए की तरह कर रहा था ।

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