Записки Вредного программиста

enjoy, motherfuckers ;)

Деплой Ruby приложения на Heroku

Здравствуйте, уважаемые программисты или те, кто попал сюда случайно, сегодня речь пойдет о деплои ruby приложения на heroku. Бесплатный для небольших приложений хостинг, полюбившийся многим ruby, python разработчикам.

Почему heroku?

В первую очередь, потому что бесплатный, во-вторых, удобная развертка приложения позволяет сосредоточиться на разработке, а не на решении разнообразных проблем околопрограммерского плана.

Инструментарий для деплоя

*nix система, куда без нее? ) установленный ruby, git, если вы знаете слово деплой, значит, для вас это до боли знакомые слова )

Итак, начнем

Регистрируемся на сайте heroku (куда в наши дни без регистрации? ). Создаем папку где будем размещать наше sinatra-приложение (почему именно sinatra? потому что мне нравится этот фреймворк – он легкий, несложный и позволяет сосредоточиться на изучении языка) на локальной машине, пусть это будет ~/projects/heroku-sinatra. Далее создаем (как и для всех Rack-подобных приложений) файлы в корне config.ru и Gemfile

config.ru будет содержать следующее:

1
2
require './app/bootstrap.rb'
run Sinatra::Application

этим самым мы подключаем файл приложения и запускаем оное.

Далее Gemfile для управления зависимостями, т.к. наше приложение простое и создано специально для ознакомления, нам достаточно написать пару строк:

1
2
3
source :rubygems

gem 'sinatra'

Далее создадим файл ./app/bootstrap.rb, который и будет являться нашим несложным приложением для экспериментов.

1
2
3
4
5
6
require 'rubygems'
require 'sinatra'

get '/' do
   erb "Hello, world, from Heroku at #{Time.now}"
end

Осталось несколько команд до деплоя. Тут вступает в дело gem heroku

gem install heroku – устанавливаем необходимый гем, если вы еще не сделали этого ранее.

Далее нужно рассказать heroku кто же собирается деплоить (или попросту представиться, воспитанные ведь мы), для этого пишем в консоли

heroku login

и вписываем почту, которую вы указали в первом шаге (мы ведь ее еще помним, правда?) и пароль, который придет на email.

Половина дела сделана, остались сущие пустяки.

git init – инициализируем git репозиторй git add . – добавляем в него все файлы (рекурсивно) git commit -am 'hello heroku' – сохраняем изменения в локальном репозитории heroku create %желаемое имя приложения% – мы ведь хотим чтобы наше первое приложение имело благозвучное имя, если нет, то последний параметр можно опустить, heroku тоже умеет придумывать неплохие имена )

git push -u heroku master – отправляем приложение на сервер

После успешного деплоя

Если все прошло гладко, такое разве бывает спросите вы, бывает – отвечу я. :) heroku open запустит нам наше приложение в браузере (нам ведь сложно оторваться от так полюбившейся консоли и взять в руки мышку, чтобы запустить браузер)

Возможные проблемы

Здесь небольшой список проблем, с которыми вы можете столкнуться (с которыми столкнулся я) при деплое.

Проблема с ключами – “Permission denied (publickey)”, то heroku keys::add ~/.ssh/id_rsa.pub – отправляем наши публичные ключики на сервер, чтобы heroku знал с кем имеет дело. Если нет ключа, то генерируем его

ssh-keygen -t rsa – и клацаем несколько раз Enter.

В приложение закралась ошибка, то heroku logs – отобразит логи, в которых можно будет отыскать “косячное” место, исправить его и попробовать снова. Нам, разработчикам, сдаваться никак нельзя :)

Теперь ваше ‘Hello, world’ на Ruby, можно показывать друзьям/подругам/бабушке, да вообще кому захотите. Удачи вам в кодинге и меньше коварных ошибок в приложениях. В комментариях жду вопросов, если таковые появятся или предложения от руби-гуру, где накосячил я, я исправлюсь, чесслово :)

Комментарии