2009-05-23 10 views
25

Tengo un directorio de biblioteca Ruby personalizado que me gustaría haber agregado automáticamente a la ruta de carga de Ruby cada vez que se ejecuta Ruby. Sé que puedo usar la opción -I para Ruby, pero me pregunto si hay algo así como una variable de entorno que pueda establecer que determine globalmente la ruta de carga de Ruby.Configuración de la ruta de carga de Ruby externamente

Como un lado, mi tarea de alto nivel es instalar Ruby Gems en una caja de Linux donde no tengo raíz, así que necesito tener una ruta de carga de Ruby en una ubicación no estándar. He instalado RubyGems según las instrucciones en http://rubygems.org/read/chapter/3#page83 ("Instalación de RubyGems en un directorio de usuarios"), pero el comando gem no está recogiendo la ruta de carga no estándar. Tal vez me estoy perdiendo algo obvio aquí y hacer las cosas más difíciles para mí?

Respuesta

36

Pruebe el capítulo Ruby and its world del libro de los picos, específicamente la sección sobre variables de entorno. Extracto:

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 hizo el truco. No estoy seguro de por qué una hora de Google no fue capaz de desenterrar esta información. ¡Gracias! –

4

Asegúrese de que ha colocado el bin directorio instalado en su $PATH para el comando gem de trabajo. Debe modificar el RUBYLIB, pero si no, intente con Martin's answer.

Entonces, puede tener su joya en casa (donde se almacenan las gemas que las instalaciones de rubygems se guardan) sea local.

Sólo tiene que utilizar $GEM_HOME (o poner las cosas en su ~/.gemrc) y comprobar que todo lo llevó con 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

Haga la vida más fácil e instale RVM. Instalará cualquier versión de Ruby que desee y le permitirá cambiar entre ellos y no requiere acceso a la raíz. Tiene muchas otras características que te convertirán en adicto después de usarlo por un tiempo.

+1

¿Cómo agregar una biblioteca en una ubicación personalizada con RVM? –

+0

No creo que esto responda a la pregunta OP. – Raj

+0

¿Cómo se obtuvo esta respuesta? 4 upvotes deberían ser una pregunta de SO por separado –

0

¡Gracias! Usé @MartinCarpenter's solution para ejecutar un método de prueba específico/particular/único con minitest. Donde me suelo añadir el directorio test a la $LOAD_PATH con Rake::TestTask, por ejemplo, t.libs << 'test', yo era capaz de hacerlo con la línea de comandos, así:

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

agrego test a $LOAD_PATH PORQUE user_test.rb llamadas require 'test_helper' para cargar lib/test_helper.rb .

Cuestiones relacionadas