Twój interfejs do Heroku to w zasadzie gałąź Git. Klejnot Heroku wykonuje trochę pracy poprzez swoje API, ale w repozytorium Git jest to tylko nowa zdalna gałąź.
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
Po skonfigurowaniu wielu aplikacji w Heroku powinieneś być w stanie skonfigurować repozytorium Git w następujący sposób:
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
Zwykle pracuję w gałęzi „pracującej” i używam Githuba jako swojego mistrza.
Zakładając, że tak jest w Twoim przypadku, przepływ pracy wdrażania prawdopodobnie wyglądałby mniej więcej tak:
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
polecenia muszą zawierać--app staging
lub--app production
. Czy istnieje sposób na ustawienie wartości domyślnej? (Pytanie jako komentarz b / c wydaje się zbyt ukierunkowane, aby być pełnoprawnym pytaniem SO.)To wyjaśnia wszystko, co musisz wiedzieć, jeśli jesteś nowicjuszem, takim jak ja: http://devcenter.heroku.com/articles/multiple-environments
źródło
Kluczowa część pierwotnego pytania dotyczy połączenia aplikacji testowej z subdomeną (dev.myapp.com) głównej aplikacji (www.myapp.com). Nie zostało to uwzględnione w żadnej z odpowiedzi.
Krok 1: Skonfiguruj zarówno wersję produkcyjną („myapp”), jak i wersję testową („staging-myapp”), jak wskazał w odpowiedzi Luke Bayes
Krok 2: W systemie zarządzania domeną (np. GoDaddy):
Krok 3: Skonfiguruj Heroku, aby kierował dev.myapp.com na staging-myapp:
Gdy rekord CNAME zdąży się rozpropagować, będziesz mógł uruchomić aplikację testową pod adresem dev.myapp.com.
źródło
before_filter
haczyk do mojego,application_controller
aby złapać WSZYSTKO w fazie przejściowej i zmusić użytkownika do zalogowania się jako administrator, a następnie ustawiłem plik cookie administratora, aby nadal widzieć aplikację z punktu widzenia „nieadministratora”. Pracuje całkiem nieźle dla mnie.Powinieneś sprawdzić heroku_san
Świetnie sobie radzi, żonglując środowiskami na heroku.
źródło
Teraz jest łatwiej. Oto jak to robisz ...
Utwórz aplikację dla każdego środowiska
Spowoduje to utworzenie nazwanych repozytoriów zdalnych dla każdej aplikacji, które można zobaczyć w
.git/config
.Możesz teraz używać przełączników --app lub --remote , aby kierować reklamy na określoną aplikację:
Ustaw środowiska Railsowe
W przypadku aplikacji Rails, Heroku domyślnie wybiera środowisko „produkcyjne” . Jeśli chcesz, aby Twoja aplikacja testowa działała w środowisku przejściowym , utwórz środowisko w swoim projekcie i ustaw odpowiednie zmienne środowiskowe RAILS_ENV i RAKE_ENV w aplikacji:
Skonfiguruj środowiska
Jeśli masz inne zmienne konfiguracyjne, musisz je również przekazać dla każdego środowiska.
To jednak ogromny ból, więc po prostu używam klejnotu snappconfig i biegnę
aby załadować pliki konfiguracyjne YAML mojego projektu do Heroku.
Rozmieścić
Teraz po prostu popchnij do Heroku w ten sposób:
i migruj w ten sposób:
(Zobacz Zarządzanie wieloma środowiskami dla aplikacji | Centrum deweloperów Heroku, aby uzyskać więcej informacji i skrótów).
źródło
RAILS_ENV
iRACK_ENV
abystaging
się zniechęcać Heroku: „To może być kuszące, aby utworzyć kolejną niestandardową środowiska takie jak«inscenizacji»i stworzyć config / Środowiska / staging.rb i wdrożyć do aplikacji Heroku z RAILS_ENV = inscenizacji To nie jest dobrą praktyką. . Zamiast tego zalecamy zawsze uruchamianie w trybie produkcyjnym i modyfikowanie dowolnego zachowania poprzez ustawienie zmiennych konfiguracyjnych. " Więcej na ten temat tutaj: devcenter.heroku.com/articles/…