Frage

Soll ich versuchen, tatsächlich auf meine bestehende App zu aktualisieren, oder es einfach neu schreiben meist von Grund auf, retten, was Stücke (Vorlagen, etc.) kann ich?

War es hilfreich?

Lösung

Obwohl dies hängt davon ab, was Sie tun, sollten die meisten Anwendungen in der Lage sein zu aktualisieren und dann alles zu reparieren, die bricht. Nach meiner Erfahrung, dass die wichtigsten Dinge, die ich nach einem Upgrade zu beheben hätte sind

  1. Änderungen an einigen der funky stuff mit Modellen, wie die Syntax für die folgenden Fremdschlüssel.

  2. Eine kleine Gruppe von Änderungen an der Vorlage, vor allem Auto-entkommen.

  3. Alles, was auf die spezifische Struktur von Djangos Interna abhängt. Dies sollte kein Problem sein, wenn Sie Sachen tun wie Django Interna dynamisch zu modifizieren, ihr Verhalten in eine Art und Weise zu ändern, die für Ihr Projekt erforderlich / bequem ist.

Um es zusammenzufassen, es sei denn Sie eine Menge wirklich seltsam und / oder komplexe Dinge tun, ein einfaches Upgrade sollte relativ schmerzlos sein und nur wenige Änderungen erforderlich.

Andere Tipps

Upgrade. Für mich war es sehr einfach: Änderung __str__() __unicode__(), schreibt Grund admin.py, und fertig. Starten Sie einfach die App auf 1.0 laufen, testen, und wenn Sie einen Fehler verwenden, um die Dokumentation stoßen auf rückwärts unvereinbar Änderungen zu sehen, wie das Problem zu beheben.

Sie Ihre App aktualisieren. Der Schalter 0,96-1,0 war riesig, aber in Bezug auf rückwärtsinkompatible Änderungen Ich bezweifle, Ihre App hat sogar 10% von ihnen.

Ich war auf dem Stamm vor Django 1.0, damit ich für mich den Übergang im Laufe der Zeit war, aber selbst dann ist die einzigen großen Dinge, die ich ändern musste waren newforms, newforms-admin, str () Unicode () und maxlength max_length

Die meisten anderen Änderungen wurden neue Funktionen oder Backend umschreibt oder Sachen, die als jemand, der Grund-Websites Bau wurde sogar in der Nähe nicht bekommen.

Nur einfachste Seiten sind einfach zu aktualisieren.

echte Schmerzen erwarten, wenn Ihre Website für sein passieren Nicht-ASCII Teil der Welt (sprich: überall außerhalb der USA und UK). Die schmerzhafteste Änderung in Django wurde die Umstellung von bytestrings auf Unicode-Objekte intern - jetzt müssen Sie alle Orte, wo Sie bytestrings und ändern diese in Unicode verwenden. Im schlimmsten Fall ist die Vorlage Rendering, die Sie nie wissen, dass Sie vergessen haben, eine Variable zu ändern, bis Sie UnicodeError erhalten.

Andere bemerkenswerte Sache. Manipulatoren ( oldforms ) sind gegangen, und Sie haben keine andere Möglichkeit, als alle Teile mit Formen neu zu schreiben ( newforms )

Wenn dies Ihr Fall und Ihr Projekt größer als 2-3 apps, würde ich eher zurückhaltend sein, bis wirklich notwendig zu aktualisieren.

Wir sind in einem mehrstufigen Prozess aufgerüstet und ich bin sehr zufrieden. Die Anwendung in Frage war etwa 100.000 LoC und mehrere Kerngeschäftsfunktionen mit viel von Schnittstellen zu Legacy-Systemen ausgeführt werden. Wir arbeiteten wie folgt aus:

  1. Update 0.97-post Unicode django verschmelzen. Fix alle Unicode-Probleme
  2. Refactoring die Anwendung in wiederverwendbare Anwendungen, fügen Tests. Das hat uns 40.000 LoC in der Hauptanwendung / Projekt
  3. Upgrade 0,97-post autoexcape merge django. Fix Auto in den wieder verwendbaren Anwendungen Flucht in 3 erstellt dann die restliche Auto entkommt Probleme in der Mian Anwendung beheben.
  4. Upgrade auf 1.0. Was übrig blieb war vor allem die Admin-Sachen zu fixieren.

Das Ganze dauerte etwa 6 Monate, in denen wir ein Vermächtnis Produktionszweig auf unseren Servern, wo laufen, während einen anderen Zweig auf 1,0 portieren. Während Dabei wir auch, wo Funktionen des Produktionszweig hinzugefügt wird.

Die endgültige Zusammenführung war viel weniger chaotisch als erwartet und dauerte etwa eine Woche für 4 Coder verschmelzenden, Überprüfung, Prüfung und Festsetzung. Wir rollten dann aus, und für etwa eine Woche, habe vorher unerwarteten Fehler gebissen.

Alles in allem bin ich sehr zufrieden mit dem Ergebnis. Wir haben eine viel bessere Code-Basis jetzt für die weitere Entwicklung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top