Где мои драгоценные камни?
Вы можете найти, где хранятся ваши драгоценные камни, с помощью команды gem environment
. Например:
chris@chris-laptop:~$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.2
- RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/bin/ruby1.8
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- /home/chris/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
Если вы посмотрите раздел «GEM PATHS:», вы увидите, что драгоценные камни могут храниться в двух местах на моем ноутбуке: /usr/lib/ruby/gems/1.8
или в каталоге .gem
в моем домашнем каталоге.
Вы также можете видеть, что исполняемые файлы хранятся в ИСПОЛНИТЕЛЬНОМ СПРАВОЧНИКЕ, который в данном случае равен /usr/bin
.
Поскольку /usr/bin
на моем пути, это позволяет мне запускать cap
, merb
, rails
и т. Д.
Обновление вашего PATH
Если по какой-то причине ваша ИСПОЛНИТЕЛЬНАЯ КАТАЛОГ не указана в вашем пути (например, если это /var/lib/gems/1.8/bin), вам необходимо обновить переменную PATH.
Предполагается, что вы используете оболочку bash. Вы можете сделать это быстро для текущего сеанса, набрав следующее в приглашении оболочки; давайте представим, что вы хотите добавить /var/lib/gems/1.8/bin
к пути:
export PATH=$PATH:/var/lib/gems/1.8/bin
и нажмите возврат. Это добавляет новый каталог в конец текущего пути. Обратите внимание на двоеточие между $PATH
и /var/lib/gems/1.8/bin
Чтобы установить значение для всех сессий, вам нужно отредактировать файл .profile
или .bashrc
и добавить ту же строку в конец файла. Я обычно редактирую свой .bashrc
файл только по той причине, что я всегда делал. Когда закончите, сохраните файл и затем обновите вашу среду, набрав:
bash
в приглашении оболочки. Это заставит .bashrc
перечитать.
В любой момент вы можете проверить текущее значение $PATH
, набрав
echo $PATH
в приглашении оболочки.
Вот пример с одного из моих собственных серверов, где мое имя пользователя - "chris", а имя машины - "chris-laptop":
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
chris@chris-laptop:~$
chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
Мой драгоценный камень не загружается!
" Ruby gems не загружается, даже если установлен ", что указывает на распространенную проблему с использованием нескольких различных версий Ruby; Иногда среда Gem и путь Gem не синхронизируются:
rb(main):003:0> Gem.path
=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit
Любой процесс Ruby здесь ищет только Gems в одном месте.
:~/$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
- INSTALLATION DIRECTORY: /opt/ruby1.9/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: /opt/ruby1.9/bin/ruby1.9
- EXECUTABLE DIRECTORY: /opt/ruby1.9/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /opt/ruby1.9/lib/ruby/gems/1.9.1
- /home/mark/.gem/ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
Внимательно посмотрите на вывод среды gem:
- GEM PATHS:
- /opt/ruby1.9/lib/ruby/gems/1.9.1
Это не тот путь, который был возвращен Gem.path:
["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
Трудно сказать, что именно привело к изменению lib/ruby
на lib/ruby1.9
, но, скорее всего, разработчик работал с несколькими версиями Ruby. Быстрый mv
или ln
решит проблему.
Если вам нужно работать с несколькими версиями Ruby, тогда вы действительно должны использовать rvm .