Можно, но это сложно.
Сначала установите их, используя опцию --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