Статьи

Nitrous.IO и Heroku: идеальная пара

256-спидометр

Эта статья является продолжением публикации Nitrous.IO: разработка Rails в облаке, опубликованной ранее. Если вы не читали эту статью, я рекомендую вам сделать это. Я буду ждать

Хотя это и не является обязательным условием, в этом руководстве предполагается, что у вас есть учетная запись на Nitrous.IO и настроен Box для Ruby.

Начните с яичной коробки

Если вы еще не создали ящик на Nitrous.io , выберите меню « Boxes

Nitrous Box должен быть подключен к вашей учетной записи Github . Эти инструкции в справочном центре Nitrous являются лучшим руководством для решения этой задачи.

Войти в Heroku

Это предполагает, что у вас уже есть аккаунт в Heroku . Если не создать его сейчас .
Heroku предоставляет очень подробный API (называемый Toolbelt), и он является частью экземпляра Nitrous при создании Box.

 $ heroku login

Ожидается, что вы предоставите свой логин и пароль. Это должно быть встречено с подтверждением:

 Authentication successful.

Если вы впервые используете эту Nitrous Box для развертывания в Heroku, вам необходимо добавить свой ключ SSH в Heroku. Если вы не уверены, был ли этот шаг выполнен ранее, вам не помешает просто выполнить команду еще раз .

 $ heroku keys:add

Создайте свое приложение

Создать приложение Rails

Далее вы можете просто создать приложение Rails. Мы определим базу данных PostgreSQL (потому что это то, что сейчас используют все «крутые дети»).

 $ rails new APPNAME --database=postgresql
$ cd APPNAME
Настройка Git

Обычный (и должен быть довольно знакомый) начальный коммит в Git для его настройки выглядит так:

 $ git init
$ git config --global user.name "Cody Wrighter"
$ git config --global user.email "[email protected]"
$ git add .
$ git commit -m "Initial Commit on Nitrous Box"
Создать новое приложение на Heroku

С помощью Heroku Toolbelt вы создаете приложение на Heroku с помощью этой простой команды:

 $ heroku create

Он ответит названием приложения на Heroku. Я рекомендую вам скопировать своеобразное (и часто поэтическое) имя приложения для использования на более позднем этапе .

Поскольку Bundler также включен в экземпляр Nitrous, добавьте эти строки в Gemfile:

 ruby '2.0.0'  # to maintain parity between 'development' and 'production'

gem 'pg'  #this may already exist in the Gemfile
gem 'rails_12factor', group: :production

Вы должны использовать RVM для установки Ruby 2.0.0 на Nitrous. RVM также включен в каждую коробку Nitrous, так что это так же просто, как rvm install 2.0.0rvm use 2.0.0

Настройка базы данных PostgreSQL на Heroku следующая.

Используя Heroku Toolbelt,

 $ heroku addons:add heroku-postgresql:dev

добавит базу данных PostgreSQL (свободный уровень) и вернет HEROKU_POSTGRES_COLOR_URL. Обратите внимание на фактический ЦВЕТ, который возвращается.

потом

 $ heroku pg:promote HEROKU_POSTGRESQL_URL

создать базу данных (вам нужно войти в свою панель Heroku, чтобы получить подробные данные о PostreSQL).

Обычно при создании приложения Rails следующим шагом будет редактирование файла config/database.yml Но с Heroku данные вашей производственной базы данных автоматически применяются на сервере Heroku независимо от того, что вы помещаете в файл database.yml .

Чтобы использовать базу данных Heroku PostgreSQL для разработки, следуйте инструкциям здесь . Если вы предпочитаете локальную базу данных SQLite для разработки, эти инструкции приведены в конце этой статьи .

Теперь пришло время для Bundler сотворить свою магию для нас и собрать все части воедино.

 $ bundle install

Настройте конвейер активов

Добавьте строку в ваш config / application.rb

 config.assets.initialize_on_precompile = false

Совершить в Git

 $ git add .
$ git commit -m "Heroku and Postgresql setup"

Разверните приложение в Heroku

Развертывание в Heroku — самая простая часть всего этого процесса. Я действительно ценю это, потому что это часть, которую я выполняю чаще всего в непрерывном цикле разработки.

 $ git push heroku master

Настройка сервера на Heroku

Если вы хотите остаться в пределах БЕСПЛАТНОГО царства, используйте один динамо на Heroku.

 $ heroku ps:scale web=1
$ heroku ps

Посетите приложение на сервере

На этом этапе мне нравится проводить быстрый «тест на дым», просто чтобы убедиться, что мы не пропустили ни одного из важных шагов. Это избавит вас от головной боли, когда вы будете устранять неполадки в приложении, потому что вы можете быть уверены, что оно работает на базовом уровне.
Здесь вы будете использовать [иногда поэтическое, иногда глубокое] имя Heroku, созданное для вашего приложения. Вы можете вставить имя из буфера обмена (если вы следовали моему ранее совету)

 $ curl http://<HEROKU_APP_NAME>.herokuapp.com/

Или вы можете перейти к экземпляру (на основе имени, которое он возвратил ранее):
Я просто открываю еще одну вкладку в своем браузере, которая в настоящее время подключена к Nitrous.

Вы должны получить обратно страницу Rails по умолчанию index.html Мы еще не создали никаких моделей, контроллеров или маршрутов, поэтому ссылка «О среде вашего приложения» приведет к ошибке сервера.

Этого следовало ожидать.

Для просмотра журналов приложений с помощью Heroku ToolBelt используйте heroku logs «Status = 200» в самой последней строке — это то, что мы ожидаем увидеть.

Теперь нам нужно перенести базу данных.

 $ heroku run rake db:migrate

Быстрая оценка нашего прогресса

Вы успешно создали и развернули приложение Rails ПОЛНОСТЬЮ ИЗ БРАУЗЕРА!

Используя Nitrous.IO в качестве облачной платформы разработки и Heroku в качестве облачного хоста SAAS, вы можете быть полностью разведены и разборчивы в отношении вашего клиентского оборудования и / или программного обеспечения.

Настройте сервер разработки

Чтобы превратить это пустое, доброкачественное Rails-приложение в ваш следующий продукт с разрушительным веб-продуктом, приносящий большие деньги, нам нужно провести серьезное тестирование-кодирование-рефакторинг Agile-разработки.
Теперь давайте настроим нашу среду разработки.

В Gemfile добавьте gem 'unicorn', group: :developmentbundle install

Чтобы проверить (и для каждой итерации в процессе разработки), запустите эту команду

 $ bundle exec unicorn -p 3000 -E development

Используйте Nitrous menu Preview -> Port 3000, чтобы протестировать вашу среду разработки

Один финальный коммит
 $ git add .
$ git commit -m "use unicorn for local development"
$ git push heroku

Если вы предпочитаете единорога для производства, вот подробности по его настройке .

Финальная уборка

Конечно, важно rmpublic/index.html

Я рекомендую вам также поддерживать проект в вашей учетной записи Github. В качестве общедоступного репозитория вы можете получить помощь от сообщества Open Source в виде вкладов и запросов извлечения. С помощью частного репозитория вы можете сотрудничать с другими разработчиками в вашей команде и поддерживать централизованный контроль версий.

Nitrous Box должен быть подключен к вашей учетной записи Github . Эта замечательная статья в справочном центре Nitrous объясняет, как настроить закрытый ключ Github.

Сначала создайте репозиторий на Github. Затем выполните эти две команды:

 $ git remote add github [email protected]:<github_username>/nitrous_heroku.git
$ git push -u github master

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

Запустите сервер единорога с этой командой

 $ bundle exec unicorn -p 3000 -E development

Используйте Nitrous menu Preview -> Port 3000, чтобы протестировать вашу среду разработки


Обновление среды разработки

Если вы предпочитаете использовать sqlite в разработке (что я и делаю), добавьте эти шаги.

Измените config / database.yml для ‘development’ (и ‘test’) следующим образом:

 development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

Добавить sqlite3 в Gemfile

 group :development, :test do   #sqlite3 gem is not supported on Heroku
  gem 'sqlite3'
end

Позвоните в Bundler

 $ bundle install

Затем перенести базу данных

 $ export RAILS_ENV=development
$ rake db:migrate

Проведите тест-драйв, позвонив на сервер единорога

 $ bundle exec unicorn -p 3000 -E development

А затем используйте Nitrous menu Preview -> Port 3000, чтобы открыть его в браузере.

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

Я рад вступить в новый рабочий процесс на основе браузера .