Задание пути загрузки Ruby извне - PullRequest
27 голосов
/ 23 мая 2009

У меня есть пользовательский каталог библиотеки Ruby, который я хотел бы автоматически добавлять в путь загрузки Ruby при каждом запуске Ruby. Я знаю, что могу использовать параметр -I для Ruby, но мне интересно, есть ли что-то вроде переменной среды, которую я могу установить, которая будет глобально определять путь загрузки Ruby.

Кроме того, моя высокоуровневая задача - установить Ruby Gems на Linux-систему, где у меня нет root, поэтому мне нужно иметь путь загрузки Ruby в нестандартном месте. Я установил RubyGems в соответствии с указаниями на http://rubygems.org/read/chapter/3#page83 («Установка RubyGems в каталог пользователя»), но команда gem не выбирает нестандартный путь загрузки. Может быть, я упускаю что-то очевидное и усложняю для себя?

Ответы [ 4 ]

38 голосов
/ 23 мая 2009

Попробуйте главу Ruby и его мир из книги кирки, в частности, раздел о переменных среды. Выдержки:

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.
5 голосов
/ 23 мая 2009

Убедитесь, что вы поместили установленный каталог bin в $PATH для gem Команда на работу. Он должен изменить сам RUBYLIB, но если нет, попробуйте ответ Мартина , чтобы исправить это.

Тогда вы можете сделать свой дом драгоценным камнем (где хранятся драгоценные камни, установленные с помощью rubygems).

Просто используйте $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 голосов
/ 26 августа 2010

Упростите жизнь и установите RVM . Он установит любую версию Ruby, какую вы пожелаете, и позволит вам переключаться между ними, и для него не требуется root-доступ. У него много других убийственных функций, к которым вы привыкнете после некоторого использования.

0 голосов
/ 09 апреля 2014

Спасибо! Я использовал @ решение MartinCarpenter , чтобы запустить определенный / конкретный / одиночный метод тестирования с minitest . Когда я обычно добавляю каталог test в $LOAD_PATH с помощью Rake :: TestTask , например, t.libs << 'test', я смог сделать это с помощью командной строки, например:

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

Я добавляю test к $LOAD_PATH, потому что user_test.rb вызывает require 'test_helper' для загрузки lib/test_helper.rb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...