Настройка пути загрузки Ruby снаружи
У меня есть пользовательский каталог библиотеки Ruby, который я бы хотел автоматически добавить в путь загрузки Ruby всякий раз, когда выполняется Ruby. Я знаю, что я могу использовать параметр -I для Ruby, но мне интересно, есть ли что-то вроде переменной среды, которую я могу установить, чтобы глобально определить путь загрузки Ruby.
Как в стороне, моя задача высокого уровня - установить Ruby Gems в ящик Linux, где у меня нет корневого каталога, поэтому мне нужно иметь путь загрузки Ruby в нестандартном местоположении. Я установил RubyGems в соответствии с инструкциями http://rubygems.org/read/chapter/3#page83 ( "Установка RubyGems в каталоге пользователя" ), но команда gem не выбирает нестандартный путь загрузки. Может быть, я пропустил что-то очевидное здесь и усложнил для себя?
Ответы
Ответ 1
Попробуйте 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.
Ответ 2
Убедитесь, что вы разместили установленный каталог bin
в $PATH
для gem
команда для работы. Он должен изменить сам RUBYLIB
, но если нет, попробуйте ответить Martin, чтобы исправить это.
Затем вы можете получить свой драгоценный камень домой (где хранятся драгоценные камни, в которых хранятся рубигемы).
Просто используйте $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
Ответ 3
Сделайте жизнь легкой и установите RVM. Он установит любую версию Ruby, которую вы хотите, и позвольте вам переключаться между ними, и для этого не требуется root-доступ. У этого есть много других особенностей убийцы, с которыми вы столкнетесь после использования на некоторое время.
Ответ 4
Спасибо! Я использовал @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
.