Когда я начинал с Rails, было несколько моментов «AHA!», Которые заставляли меня думать, что я трачу впустую свою жизнь как разработчик .NET. Драгоценные камни, грабли, Active Record и этот список можно продолжить.
Один из этих моментов появился спустя годы в форме Героку . Heroku — это платформа для развертывания веб-приложений на основе Ruby и Node.js. Есть много статей о начале работы с Heroku, одна из лучших — это статья Бена Скофилда, которую я рекомендую вам прочитать, прежде чем идти дальше в этой статье. Бен отлично показывает, как запустить приложение на Heroku, а также подробно описывает некоторые ограничения платформы Heroku.
К концу этой статьи вы должны увидеть, насколько просто сумасшедшим запустить Rails в сети. В этой статье я планирую продвинуться дальше в сценарии развертывания Heroku и покажу, как создать приложение для разработки и подготовки вместе с рабочим приложением.
Когда вы создаете приложения для клиентов / друзей / вашей кошки, полезно иметь «промежуточное» приложение для тестирования изменений в приложении и позволить конечным пользователям увидеть его, прежде чем вы примените что-либо к работе. Вы можете протестировать новые версии драгоценных камней или изменения макета и получить подписку без ущерба для прибыльной части сайта. Проблема, когда у вас есть промежуточная область, упрощает администрирование, поэтому вам не нужно манипулировать несколькими базами кода, копировать исходные деревья и т. Д. Heroku делает это проще простого.
подготовка
Для начала вам понадобится следующее:
- Знание мерзавца ( List Apart статья)
- GitHub repo ( настройка для всех платформ )
- Учетная запись Heroku API ( Отличная статья запуска )
- Базовые знания Rails
Я призываю вас использовать RVM при изучении чего-либо Ruby.
Процесс
Хватит болтать, давай разберемся с кодом.
Начиная с среды без драгоценных камней, нам понадобятся Bundler (1.0.14) и Rails (3.0.7)
gem install bundler
gem install rails
Теперь создайте свое Rails-приложение (rails new your_heroku_app) и перейдите в корневой каталог указанного приложения. Давайте убедимся, что все работает:
bundle install
rails s
Если все хорошо, вы должны увидеть стандартную страницу «Добро пожаловать в Rails». Теперь давайте возьмем это приложение под контроль исходного кода. Еще один замечательный побочный эффект использования Heroku — это заставляет вас использовать контроль источников.
git init
git add .
git commit -m "Initial repo commit"
GitHub
Отлично, теперь у нас есть локальный репозиторий git. Поскольку это приложение изменит мир, нам понадобятся сотрудники. Лучший способ облегчить совместную работу — использовать GitHub . GitHub делает разветвление (то есть, в основном, копирование хранилища) щелчком мыши и запросами на выдергивание (то есть способ git сказать «Эй, у меня есть для вас патч») очень просто. Кроме того, добавление GitHub-репозитория для вашего приложения дает вам автономную копию, которая не привязана к вашей платформе развертывания.
Войдите в свою учетную запись GitHub и создайте новый репозиторий.
После этого GitHub откроет вам страницу, на которой показано, как именно передать локальный репозиторий в новый GitHub. Вы заметите, что мы называем удаленный репозиторий «origin», что является мерзким эвфемизмом для идентификации основного обратного репозитория. В этом случае мы хотим, чтобы репозиторий GitHub был нашим центральным репозиторием для совместной работы, поэтому ему нужна текущая версия нашей основной ветки. Давайте отправим наш код на GitHub:
git remote add origin git@github.com:your-user-name/your_app.git
git push -u origin master
Качалка. Теперь наше приложение безопасно и мы применяем хорошие методы кодирования. Yay нас!
Heroku Staging Environment
Теперь пришло время настроить нашу постановочную среду на Heroku. Нам понадобится драгоценный камень Heroku, конечно
gem install heroku
Heroku добавляет интерфейс командной строки (CLI), позволяющий создавать приложения и манипулировать ими. Чтобы создать приложение, достаточно просто:
heroku create your-app-name --remote staging
Здесь мы передаем пару необязательных аргументов команде create. Первое — это имя приложения, которое должно быть уникальным в Heroku (то есть вам нужно изменить его на другое). Второй аргумент (–remote) автоматически добавит удаленный репозиторий git в нашу локальную настройку git, называемую «staging». В промежуточном репозитории git мы будем вносить изменения в наше приложение для проверки клиентов. Давайте подтолкнем наше приложение Rails к постановке сейчас:
git push staging master
Теперь ваше приложение находится в Интернете. Довольно легко, а? Вы можете открыть его с помощью Heroku CLI:
heroku open --app your-app-name
Сделай что-нибудь
Итак, наше приложение еще не меняет мир. Давайте заставим это сделать что-то. Для этого надуманного примера наше приложение позволит пользователю создать список скаутов (я являюсь лидером Дена для отряда моего мальчика). Сохраняя это как можно более простым, у Скаута просто есть имя. Я собираюсь использовать потрясающий драгоценный камень Райана Бейтса, чтобы мы могли быстро освоиться. Я добавляю это в Gemfile:
а затем создать макет и строительные леса.
rails g nifty:layout
rails g nifty:scaffold Scout name:string index new destroy
rake db:migrate
Примечание. Если у вас возникли проблемы с Rake, убедитесь, что установлена версия 0.8.7 или 0.9.1. Либо вы должны пройти через этот урок.
Теперь мы определили нашу модель. Давайте настроим наши маршруты и избавимся от этой страницы Rails по умолчанию:
# config/routes.rb
root :to => "scouts#index"
rm public/index.html
Запустите наш локальный сервер Rails, и мы можем добавить скаутов.
У нас есть куча локальных изменений, которые нам нужно внедрить в наши различные репозитории. Во-первых, мы хотим перейти на GitHub, чтобы наши соавторы могли начать работу над нашим Scout API.
git add .
git commit -m "Added layout and Scout scaffold"
git push origin master
Конечно, нам нужно обновить и постановку.
git push staging master
Прежде чем мы сможем начать добавление скаутов в стадии подготовки, нам нужно перенести нашу промежуточную базу данных. Как вы уже догадались, мы используем Heroku CLI.
heroku rake db:migrate
Сейчас
heroku open --app staging
и мы можем добавить разведчиков!
производство
Наш последний шаг — создать производственную среду на Heroku. Это просто вопрос запуска команды ‘heroku create’, присвоения нашему приложению heroku другого имени и создания удаленного git ‘production’.
heroku create your-app-name-production --remote production
git push production master
heroku rake db:migrate --app your-app-name-production
И вуаля! Теперь у вас есть производственная среда и счастливый клиент!
Есть и другие ресурсы для этого подхода на Heroku, один из которых взят с самого сайта Heroku . Это, безусловно, стоит прочитать, поскольку в нем упоминаются некоторые аспекты множественной среды, которые мы не рассмотрим здесь. Кроме того, есть гем под названием heroku_san, который обрабатывает многие детали, которые мы рассмотрели в этом посте для вас, которые вы должны проверить, теперь, когда вы знаете, что он делает.