Эта статья является продолжением публикации 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.0
rvm 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: :development
bundle 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
Если вы предпочитаете единорога для производства, вот подробности по его настройке .
Финальная уборка
Конечно, важно rm
public/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, и вам не нужно ничего устанавливать на свой локальный компьютер.
Я рад вступить в новый рабочий процесс на основе браузера .