Размещаем проект на Ruby on Rails

Ruby
Это статья о том, как я размещал Ruby on Rails проект на шаред хостинге. Оговорюсь, что делал всё по-простому (кто такой капистрано? :)


Сначала я решил разобраться с раскручиваемым фреймворком. Сказано — сделано. Затем я решил попробовать его в действии. Первое, что пришло на ум, было воплощено в коде. После этого возник вопрос, где разместить своё творение.

Мои требования к хостингу:
1. ествественно, поддержка руби и рейлс, работающего на монгреле,
2. пока хватит шаред-хостинга,
3. доступ по ssh,
4. установленный svn клиент (с фтп не вожусь).

Все рассмотренные СНГ-шные хостинги имели существенные недостатки:
1. сколько-сколько ($$$),
2. аптайм аж 99,99999999999% зависит от трезвости админа,
3. а про мастеркард слышали?

Посмотрел на забугорные. Выбор пал на www.webfaction.com:
1. были хорошие отзывы и ни одного плохого,
2. отличная цена,
3. потрясающая демка, как установить рейлс приложение.

Оплатил — получил хостинг. Должен сказать, служба поддержки внимательная. Ещё до регистрации ответила на все мои технические вопросы.

Теперь пошагово о размещении приложения.

Шаг 1. Создание приложения

В админке создаём приложение, которое будет автоматически сгенерировано в папке ~/webapps/test_app.



Потом добавляем домен.



И наконец, создаём сайт.



Получаем рабочую болванку. Главное в ней — это файл autostart.cgi для запуска монгрела. Всё остально можно смело удалять :) Не забываем зайти на сервер по ssh.

Шаг 2. Загружаем своё приложение

SVN делает этот процесс проще. Запускаем svn checkout. После окончания загрузки файлов пробуем запустить, набирая в браузере адрес приложения. Видим бесконечные попытки «Restarting site ...click here».

Смотрим логи приложения: «не может найти рейлс 2.0.2». Замораживаем модули рейлс в своей рабочей копии (т.е. сохраняем все gemы рейлс в директории plugins).

rake rails:freeze:gems

Делаем svn commit, затем svn update, но уже на сервере. Открываем сайт — ошибка соединения с базой.

Шаг 3. Настройка приложения

Ясен перец — базу никто и не создавал :) Пара кликов и готово.



Пароль генерируется. Прописываем параметры соединения в файле production.rb. Опять svn commit, svn update. Новая ошибка — нет такой-то таблицы. Не вопрос. Пишем в консоли:

export RAILS_ENV=production
rake rake db:migrate

Работает!

Шаг 4. Установка зависимых модулей

Вру. Приложение падает при подключении какого-то модуля. Устанавливаем gemы в свою домашнюю директорию.

cd ~
mkdir gems
export GEM_PATH=~/gems
gem install -i ~/gems module_name

Перезапускаем приложение

>> ps -u [логин]
выводится список процессов
>> kill -9 [ID процесса монгрела]
>> ./autostart.cgi

Всё тип-топ. Сайт работает — я доволен как-будто в первый раз.

Размышления

Всё-таки приятно, когда хостинги создаются для людей, а не для админов :) Хорошо, когда есть svn и не приходится закачивать файлы по фтп.

Какие удобства даёт рейлс при размещении проекта?

Создание и обновление структуры БД обходится без доставших mysqldump > dump.sql и mysql < dump.sql. БД находится под контролем CVS.

Удобно разделение настроек на production, development и test. Нет боязни переписать конфигурационные файлы.

Можно запускать тесты на рабочем сервере, чтобы окончательно убедиться в работоспособности приложения.

В общем, когда твоё приложение работает по умолчанию и без бубна — это очень хорошо!

П.С. Делитесь своим опытом размещения рейлс-приложений.
Tags:ruby on railsrubyхостингпубликуем проект
Hubs: Ruby
+10
3k 28
Comments 14

Popular right now

Программист Ruby on Rails (mid, mid+)
from 101,010 to 160,000 ₽TIQUMRemote job
Ruby on Rails - Middle - Public API
from 150,000 to 180,000 ₽igooodsСанкт-Петербург
Senior Developer Ruby on Rails
from 140,000 to 170,000 ₽EdsteinRemote job
Lead Ruby on Rails developer
from 200,000 to 280,000 ₽ikitlabRemote job
Middle/Junior Developer Ruby on Rails
from 110,000 to 130,000 ₽EdsteinRemote job

Top of the last 24 hours