2010-08-12 6 views
10

Ich habe einen Produktionsserver und einen Staging-Server, in dem neue Features getestet werden, bevor sie in Produktion gehen. Der Staging-Server unterscheidet sich physisch von dem Produktionsserver (verschiedene Hosts mit unterschiedlichen URLs), aber er imitiert ihn so viel wie möglich (d. H. Gleiche Pakete, gleiche Edelsteine ​​usw.).Rails: Inszenierung von Produktion differenzieren

Rails.env = 'production' auf beiden Servern.

Mein Problem ist, dass ich in manchen Fällen ein anderes Verhalten beim Staging benötige als bei der Produktion.

Zum Beispiel könnte eine neue Funktion massive E-Mails an Benutzer in der Produktion senden; aber während ich es teste, möchte ich sie lieber zu einem "Test" -E-Mail-Konto schicken lassen.

Wie kann ich den Server am besten erkennen?

Ich möchte es so "raily" wie möglich tun.

Vielen Dank.

Antwort

23

Im Allgemeinen werden Sie deshalb unterschiedliche Umgebungen verwenden. Praktisch ist eine Staging-Umgebung normalerweise sehr nah an der Produktion, aber mit Dingen wie echte E-Mails ausgeschaltet.

Sie sind nicht auf Entwicklung/Test/Produktion beschränkt - Sie können unter einer beliebigen Umgebung laufen, die Sie möchten. Erstellen Sie einfach eine config/environments/staging.rb-Datei, stellen Sie die gewünschten Werte dort ein und starten Sie Ihre App mit RAILS_ENV = staging - das ist alles. Auf diese Weise können Sie Ihre Produktionsumgebung emulieren, aber Funktionen nach Bedarf ein- oder ausschalten, wenn Sie sie nicht aktivieren möchten, bevor Sie tatsächlich in den Produktivbetrieb gehen.

+0

Danke. Am Ende änderte ich die Umgebung (relativ einfach, eigentlich) und jetzt funktioniert alles wie beabsichtigt. – kikito

-1

Ich fürchte, diese Antwort ist nicht sehr hilfreich.

Der railsy Weg ist, Umgebungen haben nur in der Konfiguration (Asset-Host, Datenbank etc.) für verschiedene Umgebungen zu unterscheiden. Daher wäre eine andere Datenbank mit Benutzern, die Dummy- oder Test-E-Mail-Adressen haben, der einfachste Weg, dies zu tun.

Wenn Sie in der Regel aus der Produktion klonen, empfehle ich, E-Mails aller Benutzer zu aktualisieren, entweder über oder script/console oder einfach nur eine einfache Aufgabe rake.

Und wenn Sie die Funktionen einschränken/kontrollieren möchten, dann würde ich empfehlen, dies über die Quellcodeverwaltung zu tun, d. H. Indem Sie verschiedene Revisionen bereitstellen.