Подтвердить что ты не робот

Где GEM, когда Ruby скомпилирован вручную в Mac OS X 10.6.8?

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

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

Ответ 1

Ввод 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 - интересная вещь. Если вы перейдете в указанные каталоги, вы увидите папку с именем кеш. Это будет содержать список файлов .gem, соответствующих всем установленным камнем в этом конкретном каталоге. Вы должны просто позвонить gem install *gemname* в каждый из этих файлов gem (используя новую команду gem для установки Ruby).

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

Ответ 2

Ваши "старые" драгоценные камни будут относиться к 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, вы можете сказать копировать свои драгоценные камни с помощью gemset system в один элемент под управлением RVM. Я не пробовал это делать, поскольку я устанавливаю RVM немедленно и позволяю ему обрабатывать всю мою установку Ruby, а затем я игнорирую установку системы.

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

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

Когда RVM установит версию Ruby, все будет в ~/.rvm, и ваши драгоценные камни также будут там хорошо расположены. Вы сможете управлять драгоценными камнями как gemsets по отношению к каждой версии 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/[email protected]

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

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

Ответ 3

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

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