Ihre Schnittstelle zu Heroku ist im Wesentlichen ein Git-Zweig. Das Heroku-Juwel arbeitet zwar über seine API, aber in Ihrem Git-Repository ist es nur ein neuer Remote-Zweig.
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
Sobald Sie mehrere Anwendungen auf Heroku eingerichtet haben, sollten Sie Ihr Git-Repository wie folgt konfigurieren können:
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
Normalerweise arbeite ich in einem "arbeitenden" Zweig und benutze Github für meinen Meister.
Angenommen, dies ist bei Ihnen der Fall, würde Ihr Bereitstellungsworkflow wahrscheinlich folgendermaßen aussehen:
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
Befehle--app staging
oder enthalten--app production
. Gibt es eine Möglichkeit, einen Standard festzulegen? (Als Kommentar b / c zu fragen, scheint dies zu zielgerichtet, um eine vollwertige SO-Frage zu sein.)Dies erklärt alles, was Sie wissen müssen, wenn Sie ein Neuling wie ich sind: http://devcenter.heroku.com/articles/multiple-environments
quelle
Ein wesentlicher Teil der ursprünglichen Frage besteht darin, die Staging-App mit einer Subdomain (dev.myapp.com) der Haupt-App (www.myapp.com) zu verknüpfen. Dies wurde in keiner der Antworten angesprochen.
Schritt 1: Konfigurieren Sie sowohl die Produktionsversion ('myapp') als auch die Staging-Version ('staging-myapp') Ihrer App, wie in der Antwort von Luke Bayes angegeben
Schritt 2: In Ihrem Domain Management System (zB GoDaddy):
Schritt 3: Konfigurieren Sie Heroku so, dass dev.myapp.com an staging-myapp weitergeleitet wird:
Nachdem der CNAME-Datensatz Zeit für die Weitergabe hatte, können Sie Ihre Staging-App unter dev.myapp.com ausführen.
quelle
before_filter
Hook zu meinem hinzugefügtapplication_controller
, um ALLES beim Staging zu fangen und den Benutzer zu zwingen, sich als Administrator anzumelden. Dann habe ich ein Admin-Cookie gesetzt, damit ich die App immer noch aus der Sicht eines "Nicht-Administrators" sehen kann. Arbeitet ziemlich gut für mich.Sie sollten den heroku_san überprüfen
Es macht einen ziemlich guten Job, mit Umgebungen auf Heroku zu jonglieren.
quelle
Die Dinge sind jetzt einfacher. So geht's ...
Erstellen Sie eine App für jede Umgebung
Dadurch werden benannte Remote-Repos für jede App erstellt, die Sie in sehen können
.git/config
.Sie können jetzt entweder die Schalter --app oder --remote verwenden, um auf eine bestimmte App abzuzielen :
Rails-Umgebungen festlegen
Für Rails-Apps verwendet Heroku standardmäßig die "Produktions" -Umgebung . Wenn Ihre Staging-App in einer Staging-Umgebung ausgeführt werden soll, erstellen Sie die Umgebung in Ihrem Projekt und legen Sie die entsprechenden Umgebungsvariablen RAILS_ENV und RAKE_ENV in der App fest:
Umgebungen konfigurieren
Wenn Sie andere Konfigurationsvariablen haben, müssen Sie diese auch für jede Umgebung übergeben.
Das ist allerdings ein großer Schmerz, also benutze ich einfach mein snappconfig- Juwel und renne los
um die YAML-Konfigurationsdateien meines Projekts in Heroku zu laden.
Bereitstellen
Jetzt drückst du einfach so zu Heroku:
und migrieren Sie wie folgt:
( Weitere Informationen und Verknüpfungen finden Sie unter Verwalten mehrerer Umgebungen für eine App | Heroku Dev Center .)
quelle
RAILS_ENV
undRACK_ENV
zustaging
wird von Heroku entmutigt: „Es mag verlockend sein , eine andere benutzerdefinierte Umgebung wie zu schaffen‚Staging‘und erstellen Sie eine config / Umgebungen / staging.rb und deploy auf eine Heroku App mit RAILS_ENV = Staging dies keine gute Praxis. Stattdessen empfehlen wir, immer im Produktionsmodus zu arbeiten und das Verhalten durch Festlegen Ihrer Konfigurationsvariablen zu ändern. " Mehr dazu hier: devcenter.heroku.com/articles/…