Ruby RVM — ruby version manager, система управления версиями, позволяющая запускать на одном сервере несколько версию Ruby и использовать индивидуальные настройки для каждого проекта. Чаще всего применяется при запуске приложений на Ruby on Rails.
Рассмотрим установку и настройку RVM на севрере с ОС Debian 8, процесс будет выглядеть идентично на любых Debian-based дистрибутивах, в т.ч. на Ubuntu
Работать будем от пользователя с ограниченными привелегиями, создадим его авторизовавшись от имени root
useradd rubyuser -m -d /home/rubyuser -s /bin/bash
Зададим пароль для входа в систему
passwd rubyuser
Теперь можно стать пользователем rubyuser и в дальнейшем выполнять команды от его имени
su rubyuser
Настройка Ruby RVM на Debian
Получаем ключ, который потребуется для того чтобы получить доступ к релизу RVM
gpg —keyserver hkp://keys.gnupg.net —recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
Определяемся с директорией, в которую будем устанавливать RVM, это может быть каталог в /home/rubyuser
mkdir /home/rubyuser/rvm
cd /home/rubyuser/rvm
Скачиваем и устанавливаем дистрибутив
curl -sSL https://get.rvm.io | bash -s stable —rails
Затем выполняем source чтобы иметь возможность использовать переменные окружения, добавленные при установке в рамках текущей сессии
source /home/rubyuser/.rvm/scripts/rvm
Проверяем версии пакетов Ruby и Rails (будут установлены самые новые версии)
ruby -v
rails -v
Чтобы посмотреть посмотреть доступные для установки при помощи rvm версии Ruby нужно выполнить rvm list known
cd ~/.rvm/
rvm list known
После этого версия устанавливается просто путем указания ее цифрового обозначения
rvm install ruby-2.1
Следующая команда позволит вывести в консоль все установленные версии пакета
rvm list
Чтобы использовать желаемую версию нужно выполнить
rvm use ruby-2.1
Чтобы использовать выбранную версию по-умолчанию
rvm use ruby-2.1.1 —default
Затем вновь инициализируем окружение
source $HOME/.profile
Установка Ruby-on-rails
rails является гемом поэтому ищем доступные версии и устанавливаем нужную или нужные стандартным способом:
gem search '^rails$' —all
gem install rails -v 4.1.13
В корне проекта должен располагаться каталог с гемами
cd .gem/
Найдем в системе rails
whereis rails
Это обычный файл и его можно просмотреть
less /home/rubyuser/.rvm/gems/ruby-2.1.10/bin/rails
Запуск тестового приложения на rails
К теме данной статьи дальнейший материал непосредственно не относится, но размещается здесь.
Обычно непосредственно на rails приложения не запускают, для этого используется связка веб-севреров — чаще всего Nginx + Unicorn
Задача: Имеется блог на rails, который требуется запустить на сервере.
Создаем каталог под приложение
mkdir app
Переходим в него
cd app
Стартуем приложение (с указанием имени проекта, которое может быть любым):
rails new my-blog -T
При выполнении предыдущей команды автоматически создался одноименный приложению каталог
cd my-blog
Генерируем модель в которой, посты блога будут представлять собой текст, заголовки — строки
rails g model Post title:string body:text
На этом этапе могут возникнуть ошибки о нехватке в системе JavaScript Runtime, для которого нужен NodeJS
\curl -sSL https://deb.nodesource.com/setup_6.x -o nodejs.sh| sudo -E bash —
Обновим информацию о пакетах
sudo apt-get update
Устанавливаем nodejs
sudo apt-get install nodejs
Повторяем попутку генерации модели
rails g model Post title:string body:text
Команда сгенерировала файлы, необходимы для запуска проект, далее нужно выполнить
rake db:migrate
cd ~/app/blog/
Добавляем необходимые гемы, для приложения из примера их два
mcedit Gemfile
gem 'simple_form','~> 3.2'
gem 'bootstrap-sass','~> 3.3'
Перечитываем Gemfile (могут потребоваться дополнительные гемы или доработка непосредственно приложения, однако процесс индивидуален и в рамках данного материала описывать его смысла нет — чтобы получить работоспособный сайт на rails из примера нужно выполнить шаги из инструкции)
bundle install
После чего запускаем сервер командой
rails server
Сейчас он должен работать и информация о нем должна отображаться в выводе netstat
netstat -nltp
Читайте про то как настраивается связка Nginx + Unicorn