Установка RubyGems на хостинге
Сегодня решил протестировать один из своих рельсовых проектов на хостинге. Дома-то работает всё круто, а вот в продакшн-режиме не захотело. Во-первых, оказалось, что рельсы на хостинге установлены не те, во-вторых, RubyGems старый. Ладно, хоть Ruby сам работал, и на том спасибо ((-:
Первым делом я решил обновить RubyGems, чтобы в дальнейшем избежать лишних вопросов от менеджера gem'ов. Делается это так:
Первым делом, нужно придумать путь к своему личному репозиторию гемов. Пригодится, обещаю. По-умолчанию, в последних версиях предлагается путь вида
/home/username/.gem/. Таким образом, нужно в консоли ввести:export GEM_HOME=~/.gem
Затем нужно скачать последнюю версию RubyGems и, собственно, установить её. Устанавливать нужно в какое-нибудь укромное местечко внутри домашней директории. Я выбрал для этих целей
~/ruby/gem. Последнюю версию RubyGems можно скачать с официального сайта. Сейчас последняя стабильная версия — 1.0.1Выполняем команды:
mkdir ~/temp mkdir ~/ruby/gem cd ~/temp wget http://rubyforge.org/frs/download.php/29548/rubygems-1.0.1.tgz tar -zxf rubygems-1.0.1.tgz cd rubygems-1.0.1 ruby setup.rb all --prefix=~/ruby/gem
При удачно сложившихся обстоятельствах — установка прошла успешно. Чтобы проверить, введите в консоли
gem. Если всё успешно — выведется помощь по этой команде. Возможно, однако, появление ошибки о ненайденном файле. В таком случае, необходимо экспортировать ещё одну переменную окружения —RUBYLIBследующей командой:export RUBYLIB=~/ruby/gem/lib
Теперь заставим систему вызывать по слову
gemтолько что установленный экземпляр:export PATH=~/ruby/gem/bin:$PATH
Во время установки RubyGems был создан новый gem-репозиторий по адресу
~/.gem. Подскажем системе, что гемы теперь нужно таскать оттуда:export GEM_PATH=~/.gem
Вы видите уже вторую переменную окружения, начинающуюся а
GEM_. И обе они указывают на одну и ту же директорию, давайте разберёмся, зачем:GEM_HOMEуказывает на директорию, в которую будет происходить установка новых гемов. При желании, можно при кадой установке добавлять параметр--install-dir, но лично мне лень, поэтому я предпочёл один раз установить переменную окружения.GEM_PATHв свою очередь, указывает на директорию, в которой будет происходить поиск установленных гемов.
Всё. Установка RubyGems завершена. Если описание показалось вам недостаточным — задавайте вопросы, я постараюсь на них ответить.
комментарии (18)
Только один глупый вопрос - А что будет если саппорт хостинга ткнуть на тему "обновите gem и его gem'ы"?)
Я отталкивался от соображения, что если саппорт обновит гемы один раз, ему это может понравиться (-: и потом он (без моего спроса!) может что-нибудь ещё сотворить с гемами, сделав систему снова несовместимой с моими приложениями. Поэтому, я решил что лучше будет мне самому один раз всё сделать «как надо».
Да и просто хотелось чуть-чуть поработать в консоли ((-:
а для предотвращения этого, вроде бы, некие стандартные средства предусмотрены.
Да и просто хотелось чуть-чуть поработать в консоли ((-:
А на своём компьютере консоль отрезана? :)
Чего не хватает (а такого немного) — легко прикручивается ручками (-:
Но ваш случай, по-моему, неудобен тем, что для каждого приложения (у меня на этом сервере их несколько) необходимо устанавливать одни и те же гемы, а следуя моему пути, мы установим гемы лишь раз.
Я не утверждаю, что сюда класть однозначно удобнее других вариантов. Кому-то удобнее так, кому-то по другому. Мне оказалось удобнее именно тем, что все лежит в репозитарии и для работы проекта у другого девелопера на другой машине достаточно сделать чекаут проекта.
Насчет шаред, для рельсов лучший пожалуй hostingrails.com, худший - godaddy ( aka страшный_сон ). но и на godaddy помогли все те же гемы, перенесенные в $RAILS_ROOT/vendor/plugins/gems и rake rails:freeze:gems