Где находятся GEM, когда Ruby компилируется вручную в Mac OS X 10.6.8? - PullRequest
14 голосов
/ 20 ноября 2010

Я вручную собрал Ruby 1.9.2 на Snow Leopard.Теперь я не могу найти мои старые файлы GEM.Я предполагаю, что они сейчас на другом пути или что-то в этом роде.Итак, у меня есть три вопроса:

  • Что такое "старый" путь к драгоценному камню, где gem install sinatra помещает камень синатры?
  • Что такое "новый" путь к драгоценному камню, которыйустановить, когда я собираю Ruby вручную?
  • Как мне изменить его, чтобы Ruby снова нашел мои драгоценные камни?

Ответы [ 3 ]

38 голосов
/ 20 ноября 2010

Ввод gem env (используя команду gem вашей старой установки Ruby) в командной строке выдает что-то похожее на:

> RubyGems Environment:
>   - RUBYGEMS VERSION: 1.3.6
>   - RUBY VERSION: 1.9.1 (2009-07-16 patchlevel 243) [i386-mingw32]
>   - INSTALLATION DIRECTORY: C:/Ruby19/lib/ruby/gems/1.9.1
>   - RUBY EXECUTABLE: C:/Ruby19/bin/ruby.exe
>   - EXECUTABLE DIRECTORY: C:/Ruby19/bin
>   - RUBYGEMS PLATFORMS:
>     - ruby
>     - x86-mingw32
>   - GEM PATHS:
>      - C:/Ruby19/lib/ruby/gems/1.9.1
>      - C:/Users/Username/.gem/ruby/1.9.1
>   - GEM CONFIGURATION:
>      - :update_sources => true
>      - :verbose => true
>      - :benchmark => false
>      - :backtrace => false
>      - :bulk_threshold => 1000
>   - REMOTE SOURCES:
>      - http://rubygems.org/

(В Windows ... я думаю, что Snow Leopard будет иметь аналогичный формат)

Интересным здесь является поле GEM PATHS.Если вы перейдете в эти каталоги из списка, вы должны увидеть папку с именем cache .Он будет содержать список файлов .gem, соответствующих всем установленным гемам в этом конкретном каталоге.Вы должны просто иметь возможность вызывать gem install *gemname* для каждого из этих gem-файлов (используя вашу команду new Ruby install gem).

EDIT: ошибочно ссылается на ИНСТАЛЛЯЦИОННЫЙ СПРАВОЧНИК вместо GEM PATHS.Грег напомнил мне, что есть несколько мест, известных по конкретной установке Rubygems.Все эти места должны быть проверены на драгоценные камни, используемые этой установкой Ruby.

7 голосов
/ 20 ноября 2010

Ваши "старые" драгоценные камни будут относиться к Ruby, который поставляется в комплекте с Mac, потому что команда gem включена в Ruby 1.8.7, который есть в Snow Leopard.Если ваш which ruby показывает /usr/bin/ruby, ваша окружающая среда драгоценного камня должна быть похожа на:

- GEM PATHS:
   - /Library/Ruby/Gems/1.8
   - /Users/greg/.gem/ruby/1.8
   - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

Если вы используете RVM, вы могли бы иметь возможность передать его копииваши драгоценные камни из набора драгоценных камней system к одному под контролем RVM.Я не пытался сделать это, так как я немедленно установил RVM и позволил ему обрабатывать все мои установки Ruby, а затем игнорировал установку системы.

Если ваш which ruby показывает /usr/local/bin/ruby, то команда gem env должнаотражает измененный путь для версии, которую вы скомпилировали из исходного кода.

Мне любопытно ПОЧЕМУ вы бы построили его вручную, когда RVM доступно для обработки всех конфигурирование и установка , и в значительной степени снимают любые опасения по поводу , где находятся вещи, и если вы только что нажали на установленную версию системы.

Когда RVM установилВерсия Ruby, все это будет в ~/.rvm, и ваши драгоценные камни также будут хорошо расположены там.Вы сможете управлять драгоценными камнями как наборами драгоценных камней относительно каждой версии Ruby и мгновенно переключаться назад и вперед.Или, что еще лучше, вы можете запустить команду / программу в каждой установленной вами версии Ruby, чтобы протестировать их, используя rvm ruby 'some command'.

Обратите внимание на вышеприведенный вывод gem env, что гемынаходятся в трех отдельных областях на диске.Под контролем RVM они находятся в песочнице RVM:

- GEM PATHS:
   - /Users/greg/.rvm/gems/ruby-1.9.2-p0
   - /Users/greg/.rvm/gems/ruby-1.9.2-p0@global

Это делает для меня тривиальным их резервное копирование или удаление, если я хочу.

Я использовал для компиляции своихрубины из источника на моих компьютерах Mac и Linux.Я использую RVM для этого сейчас.Это намного лучше, чем делать это вручную.

4 голосов
/ 20 ноября 2010

Я считаю, что стандартный путь установки gem в OS X:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/
...