Установка RVM, Ruby 1.9.2, Ruby on Rails 3.0.1 на Ubuntu + решение проблемы с гемом mysql2

В этой статье я опишу идеологически правильную установку Rails 3.0.1 и сопутствующего добра на Ubuntu. Вообще я стараюсь ставить весь софт из пакетов, но в данном случае, для лучшего контроля версий сделаю исключение.

Сразу хочу ответить на вопрос, зачем я это делаю. В сети много материалов по установке Rails, про RVM тоже есть. Однако везде есть какие-либо неточности, и из простого руководства статья превращается в квест “собери сам”. Хочется надеяться, что эта статья такой не станет. Итак поехали!

Установка RVM на Ubuntu

RVM (Ruby Version Manager) – программа для управления версиями руби, и его гемов (расширений), одним из которых является Rails.

1. Ставим RVM через CURL

2. Открываем файл /home/имя_вашего_юзера/.bashrc и в начале файла
меняем строку:

на

Затем в конце файла добавляем эти строки:

3. Проверяем установку RVM:

Установка RVM для всех пользователей

Этот вариант подходит для серверов. Для примера будем ставить RVM для всех пользователей (и в частности для юзера andrey).

1. Заходим под root. Ставим RVM через CURL

2. Для каждого юзера, который будет работать с rvm (в т.ч. и root) делаем следующее

2. Открываем файл /home/имя_вашего_юзера/.bashrc и в начале файла
меняем строку:

на

Затем в конце файла добавляем эти строки:

3. Выходим из терминала. Запускаем заново. Проверяем установку RVM:

Тут есть такой нюанс. Если вы сделаете такую последовательность команд.

то вы проверите установку rvm для юзера andrey, а не root, как могло бы показаться. Для точнйо проверки делайте так:

Установка Ruby 1.9.2 через RVM

Тут история такова, что в некоторых мануалах рекомендуют ставить из head (rvm install 1.9.2-head), однако у меня установить его таким образом не получилось. Были ошибки типа этой:

А в логах – ошибки компиляции:

Так что ставим без head.

ВАЖНОЕ ЗАМЕЧАНИЕ! Если вы будете ставить гемы от пользователя root, то они будут доступны всем остальным пользователям (начиная со следующего их входа в систему).

1. Устанавливаем ruby и делаем симлинки

2. Проверяем

Установка Rails 3.0.7

Последняя на данный момент версия Rails – 3.0.7 (хотя и есть 3.1, но она пока в бете). Ставится Rails очень просто:

Смотрим версию:

Если резюмировать, то установка через RVM на порядок проще, чем через пакеты. Ну и собственно пакеты в репозитарии отстают по версиям.

Решение проблемы с геомом mysql2

После вышеприведённой установки, при наличии MySQL 5.5/Percona 5.5 в системе Rails-приложение с геомо mysql2 запускаться не будет. При запуске (rails server) возвращает примерно такие ошибки:

Проблема решается принудительной установкой версии 0.2.6 гема mysql2.

Далее в Gemfile прописываем вместо

следующее

Затем, как обычно:

Начиная с версии 0.2.7 работать перестает, а < 0.2.7 всё ок.

Удаление RVM

При первой установке я поставил RVM для своего юзера(andrey) и потом уже не смог поставить его для root. Чтобы переустановить RVM, мне пришлось сначала его удалить. Делается это так:

Не забудьте проверить файлы .bashrc, .profile и .bash_profile files.

А также удалить /etc/rvmrc file, or one в домашнем каталоге ~/.rvmrc.
Подробности тут.

Литература

http://www.christopherirish.com/2010/08/25/how-to-install-rvm-on-ubuntu-10-04/

http://fominov.ru/2010/09/ustanovka-ruby-1-9-2-i-rails-3-s-pomoshhyu-rvm-na-ubuntu-10-04/

16 Comments

  1. Еще вот полезная фишка по работе с RVM. Допустим, у нас есть приложение blog.

    Делаем:

    $ cd blog/

    Затем создаем гемсет для нашего приложения (для удобства имя такое же, как у приложения):
    $ rvm gemset create blog

    Потом:
    $ nano .rvmrc

    и в файле прописываем и сохраняем:

    rvm use 1.9.2@blog

    Затем делаем:

    $ cd ./

    Появится сообщение от RVM. Пишем там ‘yes’. Вот, теперь при переходе в папку нашего приложение через консоль будет автоматически использоваться Ruby 1.9.2 с гемсетом blog. Очень удобно.

    1. Нет. Ерунда какая-то. Потом при перемещении такой папки в неё нельзя войти.

  2. Отличная статья!
    1.9.2-head может не устанавливаться, потому что head-версия это самая новая из репозитариев. Просто 1.9.2 конечно, лучше и стабильней

  3. А что же о безопасности ОС ?
    В баш вставляем обращение через CURL наружу, не ведомо что прийдёт в ответ?
    Не слишком ли жирно потерять с десяток заказчиков, проекты которых храняться на сервере и за одних рельсов?
    Наверное проще крест поставить на этом Rails…
    Дико извиняюсь.

    1. Да всё правильно. Но лучшего решения на данный момент нет.

    2. Уважаемый Dexel, описываю вам классическую схему деплоя Rails-приложения.
      Для каждого приложения на сервере создается отдельный пользователь. Устанавливается rvm-per-user, unicorn и его воркеры с приложением запускаются от имени пользователя приложения. nginx под www-data использует сокет юникорна для обслуживания сайта. Никаких рутов, все безопасно

  4. Додрфй день, по совету знакомых решил освоить Ruby,
    пока раотаю в winXP, перепробовал много RubyInstalers,
    при попытке запустить простенькую программу возникают проблемы, уже потратил кучу времени,пожалуйста помогите проскочить проблем уили нужно просто перейти на линукс. Спасибо Николай

    1. Да легко, только задавайте конкретные вопросы 🙂

  5. здравствуйте! У меня возникла такая проблема- при выполнении команды – bash < <( curl https://rvm.beginrescueend.com/releases/rvm-install-head )

    возникает сообщение об ошибке – bash: ошибка синтаксиса около неожиданной лексемы `&’

    подскажите пожалуйста в каком направлении копать?

    1. Это косяк сайта, он символы перекодирует. &ampl = &
      Весь список см. вот тут.

      1. Спасибо, с этим разобрался – иеперь вопрос в следующем – при выполнении sudo aptitude install build-essential bison openssl libreadline5 libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim libsqlite3-0 libsqlite3-dev sqlite3 libreadline-dev libxml2-dev git-core subversion autoconf
        Выдается ошибка 404 файлы не найдены. Система у меня Рунта. Жду Вашей помощи.

  6. Здравствуйте! Все команды выполняются нормально, но после завершения, при попытке ввести команду rvm notes, система говорит, что команда rvm не найдена. ОС – Ubuntu 11.04. Буду очень благодарен за помощь.

Leave a Comment