Де мої дорогоцінні камені?
Ви можете знайти, де зберігаються ваші дорогоцінні камені, використовуючи 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:
Якщо ви подивитесь на розділ "ШЛЯХИ ДРАГОЦІНІЙ:", ви побачите, що дорогоцінні камені можна зберігати в двох місцях на моєму ноутбуці: /usr/lib/ruby/gems/1.8
або в .gem
каталозі мого домашнього каталогу.
Ви також можете побачити, що виконувані файли зберігаються у ВИКОНАВІЙ КАТАЛОГІ, що в цьому випадку є /usr/bin
.
Тому що /usr/bin
в моєму шляху це дозволяє мені працювати cap
, merb
, і rails
т.д.
Оновлення шляху
Якщо з якихось причин ваш ВИКОНАВИЙ ДИРЕКТОР не на вашому шляху (наприклад, якщо це /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; Іноді середовище самоцвіту та шлях дорогоцінного каменя не синхронізуються:
rb(main):003:0> Gem.path
=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit
Будь-який процес Ruby тут шукає свої дорогоцінні камені лише в одному місці.
:~/$ 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 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 .