Я хотел бы использовать код для dev.myapp.com
для тестирования, а затем для www.myapp.com
для использования в производстве. Возможно ли это с Heroku?
Проводящий экземпляр на Heroku
Ответ 1
Ваш интерфейс к Heroku по существу является ветвью Git. Жемчуг Heroku выполняет некоторую работу через свой API, но в вашем репозитории Git это просто новая удаленная ветвь.
heroku create yourapp # production
git br -D heroku # delete the default branch
heroku create staging-yourapp # staging
git br -D heroku # delete the default branch
После того как вы настроили несколько приложений на Heroku, вы сможете настроить репозиторий Git следующим образом:
git remote add staging [email protected]:staging-yourapp.git
git push origin staging
git remote add production [email protected]:yourapp.git
git push origin production
Обычно я работаю в "рабочей" ветке и использую Github для своего хозяина.
Предполагая, что случай для вас, ваш рабочий процесс развертывания, вероятно, будет выглядеть примерно так:
git co -b working
# do some work
# push to github:
git co master
git merge working
git push
# push to staging:
git co staging
git merge master
git push origin staging
# push to production
git co production
git merge master
git push origin production
Ответ 2
Это объясняет все, что вам нужно знать, если ваш новичок, как я: http://devcenter.heroku.com/articles/multiple-environments
Ответ 3
Ключевой частью исходного вопроса является связывание промежуточного приложения с субдоменом (dev.myapp.com) основного приложения (www.myapp.com). Это не было рассмотрено ни в одном из ответов.
Шаг 1: Настройте обе версии ('myapp') и промежуточную версию ('staging-myapp') вашего приложения, как указано в ответе Люка Байеса
Шаг 2. В вашей системе управления доменом (например, GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Шаг 3: Настройте Heroku для маршрутизации dev.myapp.com в staging-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
После того, как запись CNAME успела распространиться, вы сможете запустить свое промежуточное приложение на dev.myapp.com.
Ответ 4
Вы должны проверить heroku_san
Это довольно хорошая работа, манипулирующая средами на герою.
Ответ 5
Теперь все проще. Вот как вы это делаете...
Создайте приложение для каждой среды
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Это создаст именованные удаленные репозитории для каждого приложения, которые вы можете увидеть в .git/config
.
Теперь вы можете использовать либо - приложение, либо - удаленные переключатели для таргетинга на конкретное приложение:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Установить среды Rails
Для приложений Rails, Heroku по умолчанию используется "производственная" среда. Если вы хотите, чтобы ваше промежуточное приложение запускалось в промежуточной среде, создайте среду в своем проекте и установите соответствующий RAILS_ENV и RAKE_ENV переменных среды в приложении:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Настроить среды
Если у вас есть другие переменные конфигурации, вам необходимо передать их и для каждой среды.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
Это огромная боль, хотя я просто использую свой snappconfig камень и запускаю
$ rake heroku:config:load[myapp-staging]
для загрузки файлов конфигурации проекта YAML в Heroku.
Deploy
Теперь вы просто нажимаете на Heroku следующим образом:
$ git push staging master
$ git push production master
и выполните миграцию следующим образом:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(см. Управление несколькими средами для приложения. Центр Heroku Dev для получения дополнительной информации и ярлыков.)