Использование драгоценного камня без его установки - PullRequest
7 голосов
/ 27 мая 2009

Мне нужно запустить несколько скриптов ruby, которые я написал на сервере, к которому у меня нет доступа sudo.
На моей собственной машине я установил несколько гемов с помощью 'sudo gem install ..' и использовал их в своем коде ..
Есть ли механизм, который позволил бы мне использовать эти драгоценные камни, не устанавливая их официально на удаленной машине?

Ответы [ 2 ]

6 голосов
/ 27 мая 2009

Можно, но это сложно.

Сначала установите их, используя опцию --install-dir, т. Е .:

gem install gem_name --install-dir /some/directory/you/can/write/to

Во-вторых, убедитесь, что в вашем домашнем каталоге есть файл .gemrc, который выглядит примерно так:

gemhome: /some/directory/you/can/write/to
gempath:
 - /some/directory/you/can/write/to
 - /usr/local/lib/ruby/gems/1.8

gemhome - это место, где драгоценные камни должны смотреть в первую очередь при поиске драгоценного камня. gempath - это все пути, которые он должен проверять при поиске драгоценного камня. Таким образом, в .gemrc выше я говорю моему коду сначала искать в локальном каталоге, и, если не найден, проверить системный каталог gem.

В-третьих, имейте в виду, что некоторый код - даже код внутри драгоценных камней - может делать предположения о том, где расположены драгоценные камни. Некоторый код может программно изменить gempath или gemhome. Возможно, вам придется «изменить его» в своем собственном коде.

Существует не так много (читай: нет) документации о том, как это сделать - лучший способ понять это - прочитать тесты, включенные в источник RubyGems. Вот как я взламываю пути драгоценных камней в задаче о граблях, чтобы указать на мою замороженную версию capistrano:

  Gem.use_paths(Gem.dir, ["#{RAILS_ROOT}/vendor/gems"])
  Gem.refresh # picks up path changes
3 голосов
/ 27 мая 2009

Вы можете установить их в пользовательский каталог: http://docs.rubygems.org/read/chapter/3#page83

Похоже, это позволяет устанавливать драгоценные камни в любом месте.

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