Ваш интерфейс к 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
git push staging edge work
?heroku create yourapp --remote your-remote
heroku
команды должны включать--app staging
или--app production
. Есть ли способ установить значение по умолчанию? (Вопрос в качестве комментария b / c кажется слишком целенаправленным, чтобы быть полноценным SO-вопросом.)Это объясняет все, что вам нужно знать, если вы такой же новичок, как я: http://devcenter.heroku.com/articles/multiple-environments
источник
Ключевой частью исходного вопроса является привязка промежуточного приложения к поддомену (dev.myapp.com) основного приложения (www.myapp.com). Об этом не говорится ни в одном из ответов.
Шаг 1. Настройте производственную ('myapp') и промежуточную ('staging-myapp') версии вашего приложения, как указано в ответе Люка Байеса.
Шаг 2. В системе управления доменом (например, GoDaddy):
Шаг 3. Настройте Heroku для маршрутизации dev.myapp.com на staging-myapp:
После того, как запись CNAME успеет распространиться, вы сможете запустить свое промежуточное приложение на dev.myapp.com.
источник
before_filter
ловушку, чтобыapplication_controller
поймать ВСЕ на постановке и заставить пользователя войти в систему как администратор, а затем установить файл cookie администратора, чтобы я мог видеть приложение с точки зрения «неадминистратора». Работает неплохо для меня.Вы должны проверить heroku_san
Он неплохо справляется с жонглированием окружением на героку.
источник
Теперь все проще. Вот как вы это делаете ...
Создайте приложение для каждой среды
Это создаст именованные удаленные репозитории для каждого приложения, которые вы можете увидеть в
.git/config
.Теперь вы можете использовать переключатели --app или --remote для нацеливания на конкретное приложение:
Установить среду Rails
Для приложений Rails Heroku по умолчанию использует «производственную» среду . Если вы хотите, чтобы ваше промежуточное приложение запускалось в промежуточной среде, создайте среду в своем проекте и установите соответствующие переменные среды RAILS_ENV и RAKE_ENV в приложении:
Настроить среду
Если у вас есть другие переменные конфигурации, вам также необходимо передать их для каждой среды.
Это огромная боль, поэтому я просто использую свой гем snappconfig и запускаю
чтобы загрузить файлы конфигурации YAML моего проекта в Heroku.
Развернуть
Теперь вы просто нажимаете на Heroku вот так:
и выполните миграцию следующим образом:
(См. Раздел Управление несколькими средами для приложения | Центр разработки Heroku для получения дополнительной информации и ярлыков.)
источник
RAILS_ENV
иRACK_ENV
кstaging
обескураживает Heroku: «Это может быть заманчивым , чтобы создать другую пользовательскую среду , такие как„постановка“и создать конфиг / сред / staging.rb и развернуть в приложение Heroku с RAILS_ENV = стадирования Это не является хорошей практикой. . Вместо этого мы рекомендуем всегда работать в производственном режиме и изменять любое поведение, задав переменные конфигурации. " Подробнее об этом здесь: devcenter.heroku.com/articles/…