Установка Ruby on Rails на Ubuntu 16.04 с PostgreSQL
Введение
Ruby on Rails — это фреймворк для веб-приложений с открытым исходным кодом под лицензией MIT. Rails следует архитектуре MVC (Model-View-Controller) и предоставляет стандартную структуру для базы данных, веб-сервисов и страниц. Многие известные приложения построены на Rails, например GitHub, Airbnb и Soundcloud.
Определение в одну строку: RVM — менеджер версий Ruby; Rails — фреймворк на Ruby; PostgreSQL — реляционная СУБД.
Важно: инструкция ориентирована на Ubuntu 16.04 LTS и Rails 5. Для более новых версий пакеты и команды могут отличаться.
Что вам понадобится
- Сервер или машина с Ubuntu 16.04 LTS.
- Root-права или доступ по sudo.
- Подключение к интернету.
Быстрый план действий
- Установить RVM (Ruby Version Manager).
- Установить Ruby 2.3.1 и сделать её версией по умолчанию.
- Установить Node.js как JavaScript-движок для asset pipeline.
- Обновить RubyGems и отключить установку документации (опционально).
- Установить Rails 5.
- Установить и настроить PostgreSQL для разработки.
- Создать новое Rails-приложение с PostgreSQL и проверить CRUD через scaffold.
Важные примечания
Important: На продакшн-серверах RVM может быть заменён на системные пакеты или rbenv. Этот гайд ориентирован на среду разработки или тестовую VM.
Шаг 1 — Установка RVM
RVM (Ruby Version Manager) — командная утилита на Bash и Ruby для управления несколькими версиями Ruby на одной системе. Ниже показан способ установки стабильной версии RVM и добавления GPG-ключа.
Выполните импорт GPG-ключа:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3Установите стабильный RVM вместе с Ruby:
curl -sSL https://get.rvm.io | bash -s stable --rubyЭта команда установит зависимости, загрузит и установит RVM.
Затем активируйте RVM в текущей сессии:
source /usr/local/rvm/scripts/rvm
Советы и варианты:
- Альтернатива: rbenv — более «микрофокусный» менеджер версий, предпочитаемый в некоторых окружениях. Используйте его, если хотите избежать скриптов в shell.
- При ошибке GPG: убедитесь, что исходящий трафик к hkp://keys.gnupg.net не блокируется брандмауэром.
Шаг 2 — Установка Ruby
На момент написания стабильная версия Ruby, используемая в руководстве — 2.3.1. Установим её через RVM и сделаем версией по умолчанию.
Обновите RVM и установите Ruby:
rvm get stable --autolibs=enable
rvm install ruby-2.3.1Сделайте Ruby 2.3.1 используемой по умолчанию:
rvm --default use ruby-2.3.1Проверьте версию Ruby:
ruby -v
Советы:
- Если сборка ruby завершается ошибкой, установите дополнительные зависимости (build-essential, libssl-dev, zlib1g-dev и т.д.). RVM обычно подсказывает, каких пакетов не хватает.
- Для современных проектов используйте более новые ветки Ruby (2.6/2.7/3.x). В этом гайде оставляем 2.3.1 ради совместимости с Rails 5.
Шаг 3 — Установка Node.js
Rails использует JavaScript-движок для компиляции ассетов. Рекомендуется установить Node.js как runtime.
Установите Node.js из репозитория NodeSource:
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
apt-get install -y nodejsПримечание: версия 4.x подходит для Rails 5 и Ubuntu 16.04 в этом руководстве. Для новых Rails используйте актуальные LTS-ветки Node.js.
Шаг 4 — Настройка RubyGems
RubyGems — менеджер пакетов Ruby, доступный через команду gem.
Обновите систему gem и проверьте версию:
gem update --system
gem -vОпционально: отключите установку документации при установке гемов, чтобы ускорить процесс:
echo "gem: --no-document" >> ~/.gemrcШаг 5 — Установка Ruby on Rails 5
Установите Rails 5.0.0 через gem:
gem install rails -v 5.0.0Проверьте установленную версию Rails:
rails -vОжидаемый вывод:
Rails 5.0.0Rails 5.0 установлен на Ubuntu 16.04 с Ruby 2.3.1.
Шаг 6 — Подготовка PostgreSQL для разработки
Rails поддерживает множество СУБД: SQLite (по умолчанию), MySQL и PostgreSQL. В этом руководстве мы используем PostgreSQL.
Установите PostgreSQL и необходимые заголовки:
apt-get -y install postgresql postgresql-contrib libpq-devПереключитесь на системного пользователя postgres и откройте psql:
su - postgres
psqlУстановите пароль для системного пользователя postgres:
\password postgres
Enter new password:Создайте роль для разработки Rails (в примере — rails_dev):
create role rails_dev with createdb login password 'aqwe123';Проверьте созданные роли:
\duТеперь PostgreSQL готов для использования Rails.

Безопасность: замените пароль ‘aqwe123’ на надёжный пароль при реальном использовании. Рассмотрите использование pg_hba.conf для ограничения доступа.
Шаг 7 — Создание первого приложения Rails с PostgreSQL
Создадим приложение myapp с PostgreSQL как базой по умолчанию:
rails new myapp -d postgresqlПерейдите в каталог приложения и отредактируйте config/database.yml:
cd myapp/
vim config/database.ymlВ разделе development укажите создаваемого пользователя и пароль:
username: rails_dev
password: aqwe123
host: localhost
port: 5432Аналогично настройте раздел test:
database: myapp_test
host: localhost
port: 5432
username: rails_dev
password: aqwe123Сохраните файл и выполните инициализацию базы данных:
rails db:setup
rails db:migrateЗапустите сервер на конкретном IP и порту (пример):
rails s -b 192.168.1.110 -p 8080
Откройте браузер по адресу http://192.168.1.110:8080 и проверьте стартовую страницу Rails.

Создадим scaffold для сущности Post и применим миграции:
rails g scaffold Post title:string body:text
rake db:migrateЗапустите сервер снова и перейдите на http://192.168.1.110:8080/posts — вы увидите простой CRUD-интерфейс, работающий с PostgreSQL.

Типичные ошибки и способы их решения
- Ошибка GPG при установке RVM: проверьте доступ к серверу ключей и попробуйте альтернативные keyservers.
- Ошибки сборки Ruby: установите пакеты build-essential, libssl-dev, zlib1g-dev, libreadline-dev.
- При ошибке подключения к PostgreSQL: проверьте host/port/username/password в database.yml и настройки pg_hba.conf.
- Баги с флагом –no-document: убедитесь, что ~/.gemrc правильно сформирован и не содержит лишних символов.
Альтернативные подходы
- rbenv вместо RVM: проще интегрируется с системными пакетными менеджерами и CI.
- Использовать системный пакет ruby и apt-get (быстрее, но версии могут быть устаревшими).
- Для production: использовать Docker-контейнеры или managed-платформы (Heroku, AWS) и CI/CD.
Чеклист ролей
Разработчик:
- Установлен RVM/rbenv и нужная версия Ruby.
- Установлены Node.js и bundler.
- Rails запускается локально.
Системный администратор:
- PostgreSQL установлен, настроен и имеет отдельного пользователя для приложения.
- Конфигурация pg_hba.conf и firewall настроены.
- Резервное копирование базы данных организовано.
DevOps/инженер по деплою:
- Выбран метод деплоя (Capistrano, Docker, platform).
- SSL и reverse-proxy настроены для продакшна.
Критерии приёмки
- Приложение rails new запускается и отдаёт стартовую страницу.
- Соединение с PostgreSQL успешно (rails db:setup и rails db:migrate без ошибок).
- Создан и доступен scaffold /posts с операциями CRUD.
Краткое руководство по откату (rollback)
Если нужно удалить приложение и базу данных:
# Остановить сервер
# Удалить директорию приложения
rm -rf ~/myapp
# Удалить БД и пользователя PostgreSQL (в psql):
DROP DATABASE myapp_development;
DROP DATABASE myapp_test;
DROP ROLE IF EXISTS rails_dev;Быстрый набор команд (cheat sheet)
- Установить RVM: curl -sSL https://get.rvm.io | bash -s stable –ruby
- Установить Ruby: rvm install ruby-2.3.1
- Установить Rails: gem install rails -v 5.0.0
- Создать приложение: rails new myapp -d postgresql
- Инициализировать БД: rails db:setup
- Запустить сервер: rails s -b 0.0.0.0 -p 3000
Безопасность и рекомендации для продакшна
- Не храните пароли в открытом виде в репозитории; используйте environment variables или secrets management.
- Настройте SSL/TLS и reverse-proxy (nginx, haproxy).
- Настройте системные службы (systemd) для автозапуска приложения.
- Обновляйте Ruby, Rails и зависимости и тестируйте совместимость перед обновлением.
Совместимость и миграция
- Для перехода на более новые версии Ruby или Rails проверьте зависимости гемов в Gemfile и используйте bundle update с последующим прогоном тестов.
- При миграции базы данных сделайте бэкап (pg_dump) перед выполнением критичных миграций.
1-строчный глоссарий
- RVM: менеджер версий Ruby.
- Rails: фреймворк MVC на Ruby.
- PostgreSQL: реляционная СУБД.
- Gem: пакет для Ruby.
Часто задаваемые вопросы
Q: Можно ли использовать MySQL вместо PostgreSQL? A: Да. При создании приложения укажите -d mysql и установите соответствующие клиентские библиотеки.
Q: Нужно ли ставить Node.js на продакшн? A: Если вы используете asset pipeline или webpacker, то на сервере сборки/деплоя должен быть JavaScript-движок или сборка должна выполняться на этапе CI.
Q: Как подключать environment variables для базы в production? A: Используйте ENV[‘DATABASE_URL’] или secrets.yml / credentials.yml.enc (в современных верcиях Rails).
Ссылки и источники
Короткое резюме
В этом руководстве вы установили RVM, Ruby 2.3.1, Node.js, Rails 5 и PostgreSQL на Ubuntu 16.04, настроили конфигурацию database.yml и создали приложение с scaffold для проверки CRUD. Для продакшна рекомендуются дополнительные шаги по безопасности, резервному копированию и автоматизации деплоя.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента