Ruby Developer Notes Useful things

10Jun/100

RVM и Rails 3

RVM (Ruby Version Manager) - это замечательный способ иметь несколько версий ruby на одной машине без головной боли. Кроме того у него есть отличная фича gemset, которая позволяет иметь несколько невзаимосвязанных наборов гемов в пределах одной версии руби.

В свете нестабильности и грядущих больших перемен в мире ruby и rails это очень востребовано. Очень удобно использовать rvm для экспериментов с rails 3 в окружении различных версий руби. Для этого достаточно сделать следующее:

[cc lang="bash" width="700"]
bash << ( curl http://rvm.beginrescueend.com/releases/rvm-install-head ) mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone --depth 1 git://github.com/wayneeseguin/rvm.git && cd rvm && ./install [/cc]
Затем нужно выполнить следующий скрипт для настройки окружения:

[cc lang="bash"]
~/.gem/ruby/1.8/bin/rvm-install
[/cc]

Теперь можно устанавливать альтернативные версии руби. Для экспериментов с rails 3 интересно попробовать стабильный REE 1.8.7 и ультрановый Ruby 1.9.2:

[cc lang="bash"]
rvm install ree
rvm install 1.9.2-head
[/cc]

Выбираем текущую версию командой use:

[cc lang="bash"]
rvm use ree
rvm use 1.9.2-head
[/cc]

Теперь создаем gemset командой:

[cc lang="bash"]
rvm gemset create rails3
[/cc]

Переключаемся между gemset:

[cc lang="bash"]
rvm gemset use default
rvm gemset use rails3
[/cc]

Можно переключаться между версиями руби и gemset одной командой:

[cc lang="bash"]
rvm use 1.9.2@rails3
[/cc]

Теперь установим Rails 3:

[cc lang="bash"]
gem install rails --pre
[/cc]

Использовать sudo внутри rvm категорически не рекомендуется!

Все!

Очень удобно! Но периодически выскакивает одна проблема: при попытке использовать команду rails или любой другой исполняемый скрипт ruby вылетает такая ошибка:

[cc lang="bash" width="700"]
~ $ rails -v
/Library/Ruby/Site/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
from /Library/Ruby/Site/1.8/rubygems.rb:214:in `activate'
from /Library/Ruby/Site/1.8/rubygems.rb:1082:in `gem'
from /usr/bin/rails:18
[/cc]

Конечно это можно легко устранить открыв новое окно терминала, но разве это "путь для настоящих самцов"? 🙂 После проведения некоторых экспериментов обнаружил что баг самоликвидируется при переключении версий руби:

[cc lang="bash"]
rvm use system
rvm use 1.9.2-head@rails3
[/cc]

И вуаля:

[cc lang="bash"]
~ $ rails -v
Rails 3.0.0.beta4
[/cc]

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

No trackbacks yet.