Я хотів би мати можливість надсилати код 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
heroku create yourapp --remote your-remote
heroku
команди повинні включати --app staging
або --app production
. Чи є спосіб встановити за замовчуванням? (Запитуючи як коментар б / к, це здається занадто націленим, щоб бути повноцінним ТАК питанням.)
Це пояснює все, що вам потрібно знати, якщо ваш новачок, як я: http://devcenter.heroku.com/articles/multiple-environments
Ключовою частиною оригінального запитання є пов’язання індексної програми з субдоменом (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.
before_filter
гачок до свого, application_controller
щоб ВСЕ схопити в постановці та змусити користувача ввійти як адміністратор, а потім встановити адміністративний файл cookie, щоб я все ще міг бачити додаток з точки зору "не-адміністратора". Для мене працює досить добре.
Вам слід перевірити heroku_san
Це робить досить гарну роботу, жонглюючи середовищами на героку.
Зараз все простіше. Ось як ви це робите ...
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Це створить іменовані віддалені репозиторії для кожної програми, які ви можете побачити в .git/config
.
Тепер ви можете використовувати або --app або --remote перемикачі для цільової конкретного додатка:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Для програм 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 для отримання додаткової інформації та ярликів.)
RAILS_ENV
та RACK_ENV
до staging
: "Може виникнути спокуса створити інше користувацьке середовище, таке як" staging ", та створити config / environment / staging.rb та розгорнути в додатку Heroku з RAILS_ENV = staging. Це погана практика Натомість ми рекомендуємо завжди працювати у виробничому режимі та змінювати будь-яку поведінку, встановлюючи ваші налаштування. Більше про це тут: devcenter.heroku.com/articles/…
git push staging edge work
?