Пользователь
0,0
рейтинг
3 ноября 2011 в 13:32

Разработка → rbenv и ruby-build: лёгкая альтернатива RVM

Ruby*
RVM велик и могуч, здесь тяжело поспорить. Но тому, кто занимается локальной разработкой, возможно хочется иметь что-то менее монструозное. Такой вариант есть, в базовом варианте это набор из двух утилит, а имено rbenv и ruby-build.


Итак, попробуем установить это хозяйство. Исхожу из того, что у вас установлена ОС, отличная от Windows.

Linux

Устанавливаем rbenv (предполагаются git, bash):
$ cd
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile


rbenv предоставляет возможности для переключения версий Ruby, но никак не связан с их установкой, для этого предназначен ruby-build.

ruby-build по умолчанию хочет поставиться в /usr/local, но мы не будем ничего загрязнять, а поставим в домашнюю папку:
export PREFIX="~/.ruby-build"; ./install.sh
$ echo 'export PATH="$HOME/.ruby-build/bin:$PATH"' >> ~/.bash_profile

OSX

Тут всё проще некуда:
$ brew update
$ brew install rbenv
$ brew install ruby-build

Далее

Ну, теперь можно запускать:
rbenv install 1.9.3-p0
Итак, теперь у нас в папке ~/.rbenv/versions лежит новенькая версия Ruby.
$rbenv versions
1.9.3-p0

Сделаем её активной:
$rbenv global 1.9.3-p0
$rbenv versions
* 1.9.3-p0 (set by RBENV_VERSION environment variable)
$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]


Автор настоятельно рекоммендует использовать Bundler, но для любителей йоги существует плагин rbenv-gemset.

PS. Да, после установки любых gem'ов, которые устанавливают бинарные файлы, необходимо запустить:
rbenv rehash

Удачного использования!
Phil Pirozhkov @philpirj
карма
154,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (18)

  • 0
    Один нюанс про который забыто в статье. После установки джемов которые ставят бинари (или шелл скрипты) в bin для ruby надо после дёргать rbenv rehash. Иначе, после gem install rails команда rails не доступна. Если использовать всегда bundler то это можно и не делать, Bundler сам всё сделает.
    • 0
      Когда выступаю в роли админа, ужасно бесит эта особенность gem'ов — ставятся в обход системного пакетного не только в свой /usr/lib/ruby, но и в bin.
      • 0
        Наверное, не стоит запускать лишнего под su.
        • –2
          А вы предлагаете под каждого юзера ставить отдельный набор гемов?
          • 0
            Пока не слишком понимаю, зачем вообще многим юзерам Ruby. Или эти юзеры так друг другу доверяют, что спокойно запускают бинарники друг друга? Может, их просто внести в общую группу, и сделать .rbenv/versions общим через символические ссылки?
          • 0
            А что тут ужасного?
  • +1
    а как тут дела обстоят с .rvmrc?
    • 0
      Да, это отдельная и довольно интересная фича. В rbenv используются три уровня, global (системный, общий), local (директория) и shell (текущая сессия), для каждого из которых можно установить в качестве используемой свою версию Ruby, причём приоритет у shell выше, чем у остальных, а у local выше, чем у global.
      • 0
        Видимо вопрос скорее не в этом. А в том что «если ли в rbenv аналог .rvmrc». Есть. Создаём в проекте файл .rbenv-version с содержимым «1.9.3-preview1» и при заходе в проект rbenv сменит руби на нужный.
        • 0
          Ну, в принципе rbenv local ровно это самое и делает — этот файл создаёт.
  • +1
    Тоже недавно перешел с rvm на ruby-build и rbenv.
    Также важно отметить, что разным версия ruby ставится разный rubygems. C 1.8.7 ставится 1.6.2, что приятно.
  • 0
    >>Исхожу из того, что у вас установлена ОС, отличная от Windows.

    А для любителей маленького и мягкого подобные решения есть?
    • 0
      Можете попробовать pik
  • 0
    а в чем приемущество то? rvm — ставится с пол пинка, rehash не требует — «круто, но зачем»?
    • 0
      В rvm есть баг когда ты заходишь в терминале через mc в проект с .rvmrc которому rvm ещё не доверяет, терминал виснет. Наверно ожидает ввода «yes» на вопрос о доверии к нему. Совсем недавно это было «исправлено» отключением этой фичи в rvm.
      • 0
        ну а помимо? :) есть какое то приемущество, конкретно под macos?
        • +2
          Я бы сказал то, что rbenv это просто переписанный правильно rvm который делает только одно своё дело. Переключает версии руби. Больше ничего он не делает. Об этом написано на https://github.com/sstephenson/rbenv. А так как это продвигают 37signals, то точно будет популярно. :)
        • +4
          Не делает ничего лишнего. Цитируя автора:
          — не перегружает команды оболочки, такие как cd
          — не имеет конфигурационного файла, так как ничем, кроме как контролем версий Ruby не занимается
          — не устанавливает Ruby, для этого есть ruby-build, или это можно сделать вручную
          — не управляет gemset'ами, для этого есть Bundler или, на худой конец, rbenv-gemset
          — не требует патчей совместимости для Ruby gem'ов
          Итого — ничего лишнего, KISS.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.