2009-05-23 10 views
25

J'ai un répertoire de bibliothèque Ruby personnalisé que je voudrais avoir ajouté automatiquement au chemin de charge de Ruby chaque fois que Ruby est exécuté. Je sais que je peux utiliser l'option -I pour Ruby, mais je me demande s'il y a quelque chose comme une variable d'environnement que je peux définir qui déterminera globalement le chemin de chargement de Ruby. En outre, ma tâche de haut niveau est d'installer Ruby Gems sur une machine Linux où je n'ai pas de racine, j'ai donc besoin d'un chemin de chargement Ruby dans un emplacement non standard. J'ai installé RubyGems par les directions http://rubygems.org/read/chapter/3#page83 (« Installation RubyGems dans un répertoire utilisateur »), mais la commande gem est de ne pas choisir le chemin de charge non standard. Peut-être qu'il me manque quelque chose d'évident ici et de rendre les choses plus difficiles pour moi-même?Réglage Ruby chemin de chargement externe

Répondre

36

Essayez le chapitre Ruby and its world du livre de pickaxe, en particulier la section sur les variables d'environnement. Extrait:

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 a fait l'affaire. Je ne sais pas pourquoi une heure de googling n'a pas été capable de déterrer cette information. Merci! –

4

Assurez-vous que vous avez placé le répertoire bin installé dans votre $PATH pour la commande gem au travail. Il devrait modifier le RUBYLIB lui-même, mais sinon, essayez Martin's answer pour résoudre ce problème.

Ensuite, vous pouvez avoir votre maison de pierres précieuses (où les pierres précieuses qui sont stockées RubyGems installations) soient locales.

Il suffit d'utiliser $GEM_HOME (ou de mettre les choses en place dans votre ~/.gemrc) et vérifiez que tout a pris avec 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

Facilitez-vous la vie et installez RVM. Il va installer n'importe quelle version de Ruby que vous voulez et vous permettre de passer entre eux et il ne nécessite pas d'accès root. Il a beaucoup d'autres caractéristiques tueuses que vous allez devenir accro après l'avoir utilisé pendant un certain temps.

+1

Comment ajouter une bibliothèque à un emplacement personnalisé avec RVM? –

+0

Je ne pense pas que cela réponde à la question OP. – Raj

+0

Comment cette réponse a-t-elle obtenu 4 upvotes devrait être une question SO distincte –

0

Merci! J'ai utilisé @MartinCarpenter's solution pour exécuter une méthode de test spécifique/particulière/unique avec minitest. Où ajouter normalement le répertoire test à la $LOAD_PATH avec Rake::TestTask, par exemple, t.libs << 'test', j'ai pu le faire avec la ligne de commande, comme ceci:

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

-je ajouter test-$LOAD_PATH parce que user_test.rb appels require 'test_helper' pour charger lib/test_helper.rb .

Questions connexes