Ruby Version Manager: Использование нескольких версий Ruby на одном компьютере.
июля 7, 2010 | Published in Ruby | 8 Comments
Ruby очень быстро развивающийся язык программирования, что несомненно очень прекрасно, но имеется один недостаток, при очередном обновлении Ruby до новой версии, ваши старые приложения могут не заработать. Что же делать? Есть два выхода из ситуации, первый — это переписывание приложения с учетом особенностей новой версии интерпретатора, а затем тестирование, исправление ошибок и т.д. Разумеется, данный способ очень плох. Второй способ решения данной проблемы является совершенным решением, он заключается в установке нескольких версий Ruby на вашу машину.
Для установки нескольких версий или реализаций Ruby на один компьютер следует использовать такой замечательный консольный инструмент как (Менеджер версий Ruby), который позволяет не просто установить несколько версий интерпретатора или несколько различных реализаций, но и создавать сколько-угодно окружений для разработки и проверки совместимости вашего приложения с различными версиями и реализациями Ruby, Ruby on Rails или другими Gem’ами.
На сколько мне известно, RVM доступен для пользования только на *nix -платформах, а это значит, что вам пора устанавливать пингвина на свой компьютер. Небойтесь нового, я и сам только недавно начал использовать Ubuntu в качестве основной ОС на моем ноутбуке и все сложности, возникавшие в процессе освоения легко решались с помощью google, или друзей, для которых Ubuntu родная ОС, но сейчас не об этом.
Прежде, чем установить RVM на ваш компьютер, убедитесь в том, что у вас установлены:
bash(version>=3.2)
awk
sed
grep
which
ls
cp
tar
curl
gunzip
bunzip2
Многие из этих тулз встроены в bash.
Дополнительно к списку выше вам понадобятся на выбор git или subversion. В данной статье мы будем работать с git, кроме того, git более удобная и современная система управления версиями. Git вам понадобится для установки RVM и его обновления.
Если вы желаете использовать RVM в Zsh, убедитесь, что у вас установлена версия zsh>=4.3.5, помимо всего перечисленного выше.
Итак, давайте для начала установим git:
sudo apt-get install git-core
В официальном руководстве по RVM дается 3 способа установки и обновления RVM. Нам рекомендуют устанавливать RVM из Git репозитория, что ж, послушаемся разумного совета и вобьем следующую строку в консоль:
mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone —depth 1 git://github.com/wayneeseguin/rvm.git && cd rvm && ./install
Мы установили RVM и теперь нам следует сделать так, чтобы RVM загружался в консоль как функция, для этого нам следует отыскать файл .bashrc, он находится в папке /home/user_name/, открыть его в редакторе кода и в самом конце поместить следующую строку:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . «$HOME/.rvm/scripts/rvm»
Теперь закройте консоль и запустите заново, это необходимо потому, что текущая консоль не знакома с функцией rvm, а вот вновь открытой rvm будет знаком так как мы только что вписали информациюю о нем в файл .bashrc.
Для проверки корректности установки наберите в командной строке:
type rvm | head -n1
Если в ответ вы получите:
rvm is a function
значит все установлено корректно.
Теперь давайте установим несколько версий Ruby. С RVM мы можем переключаться между различными реализациями, например между Jruby, MRI, Ruby EE и другими. Для работы нам понадобятся моследние версии MRI (Matz’s Ruby Interpreter) 1.8.7 и 1.9.1, т.е. Стандартные оффициальные релизы. Для установки воспользуемся следующей командой:
rvm install 1.8.7, 1.9.1
Для установки других реализаций Ruby, можете добавить:
ree – для Ruby Expert Edition
rbx – для rubinius
jruby – для Jruby
inronruby – для IronRuby
macruby – для MacRuby
maglev – для MagLev
Дожитаемся установки и вуаля! На нашей машине установлено 2 версии Ruby. Для переключения между версиями используем команду:
rvm [версия]
, например: rvm 1.9.1 для переключения на Ruby 1.9.1
Вам также следует указать, какой Ruby должен использоваться по умолчанию, для этого воспользуйтесь командой:
rvm 1.8.7 —default
Теперь, Ruby 1.8.7 будет использоваться по умолчанию, а для того, чтобы вернуться снова к его использованию, после работы с другой версией, вы можете использовать команду:
rvm default
В следующей статье мы более подробно рассмотрим работу RVM на примере создания именуемых окружений и наборов gem’ов, благодаря чему вы сможете использовать Rails 3 параллельно с Rails 2.3.х
августа 20, 2010 at 06:32 (#)
Классная статья, спасибо)
Добавьте только команду перед установкой rvm:
sudo aptitude install curl bison build-essential zlib1g zlib1g-dev libssl-dev libreadline5-dev libreadline6-dev libxml2-dev git-core subversion autoconf
Она, собственно установит все недостающее для работы rvm.
января 16, 2011 at 02:58 (#)
:)как удобно. спасибо огромное
марта 2, 2011 at 17:46 (#)
Огромное спасибо!
Но не сработало, пока не подправил следующее:
git clone –depth 1 git://github.com/wayneeseguin/rvm.git
перед «depth» вместо «−» использовал «—» :
git clone —depth 1 git://github.com/wayneeseguin/rvm.git
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . “$HOME/.rvm/scripts/rvm”
терминал ругался, пока не убрал кавычки:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . $HOME/.rvm/scripts/rvm
теперь все ОК. Еще раз Спасибо!
марта 2, 2011 at 17:49 (#)
упс. в коментариях символы выглядят одинаково :(..:
перед “depth” вместо “−” использовал “–” :
марта 2, 2011 at 20:03 (#)
все правильно, нужно 2 символа «минус», а не тире, просто редактор самоволько преобразует 2 подряд идущих минуса в тире.
марта 2, 2011 at 20:04 (#)
редактор постов самовольно исправляет два минуса на тире.
октября 13, 2011 at 09:18 (#)
При попытке установить ruby 1.8.4
iMac-mindoff:~ mindoff$ rvm install 1.8.4
Installing Ruby from source to: /Users/mindoff/.rvm/rubies/ruby-1.8.4, this may take a while depending on your cpu(s)…
ruby-1.8.4 — #fetching
ruby-1.8.4 — #downloading ruby-1.8.4-, this may take a while depending on your connection…
curl: (6) Couldn’t resolve host ‘ftp.ruby-lang.org’
ERROR: There was an error, please check /Users/mindoff/.rvm/log/ruby-1.8.4/*.log. Next we’ll try to fetch via http.
Trying http:// URL instead.
curl: (6) Couldn’t resolve host ‘ftp.ruby-lang.org’
ERROR: There was an error, please check /Users/mindoff/.rvm/log/ruby-1.8.4/*.log
ERROR: There has been an error while trying to fetch the source.
Halting the installation.
ERROR: There has been an error fetching the ruby interpreter. Halting the installation.
Как с этим бороться? Прошу только ненадо говорить что сильно старая версия и она мне ненужна
Я начинающий и в книжке по которой изучаю рельсы там версии 1.8.4 & 1.2
октября 13, 2011 at 11:02 (#)
$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p334]
[ruby-]1.8.7-head
[ruby-]1.9.1-p378
[ruby-]1.9.1[-p431]
[ruby-]1.9.1-head
[ruby-]1.9.2[-p180]
[ruby-]1.9.2-head
ruby-head
# GoRuby
goruby
# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.6.1
jruby[-1.6.2]
jruby-head
# Rubinius
rbx-1.0.1
rbx-1.1.1
rbx-1.2.3
rbx[-head]
# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2011.03]
ree-1.8.6-head
ree-1.8.7-head
# Kiji
kiji
# MagLev
maglev[-25913]
maglev-head
# Mac OS X Snow Leopard Only
macruby[-0.10]
macruby-nightly
macruby-head
# IronRuby — Not implemented yet.
ironruby-0.9.3
ironruby-1.0-rc2
ironruby-head
volniy_strelok, можете установить любую из вышеперечисленных версий. 4 — последнее число в версии Ruby это патч, патчи, как правило, содержат очень незначительные изменения и разницы между 1.8.4, 1.8.6, 1.8.7 практически нет, по крайней мере работая по книгам вы ее не заметите, а работать с более свежей версией будет приятнее ибо там меньше ошибок и уязвимостей.