Вопрос

Я бы хотел иметь возможность отправлять код в dev.myapp.com для тестирования, а затем для www.myapp.com для производственного использования.Возможно ли это с Heroku?

Это было полезно?

Решение

Ваш интерфейс к 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 git@heroku.com:staging-yourapp.git
git push origin staging

git remote add production git@heroku.com: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

Другие советы

Это объясняет все, что вам нужно знать, если вы новичок, как я: http://devcenter.heroku.com/articles/multiple-environments

Ключевая часть исходного вопроса касается привязки промежуточного приложения к поддомену (dev.myapp.com) основного приложения (www.myapp.com).Это не было рассмотрено ни в одном из ответов.

Шаг 1:Настройте как производственную («myapp»), так и промежуточную («staging-myapp») версии вашего приложения, как указано в ответе Люка Байеса.

Шаг 2:В вашей системе управления доменом (например.ГоДадди):

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.

Вам следует проверить геройку_сан

Он неплохо справляется с манипуляцией окружением на Heroku.

Теперь все стало проще.Вот как вы это делаете...

Создайте приложение для каждой среды

$ 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.

Развернуть

Теперь ты просто нажимаешь на 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 Center для получения дополнительной информации и ярлыков.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top