2009-04-21 8 views
4

Ich arbeite an einer Rails-App, die derzeit Rails 1.2 verwendet, also bin ich jetzt ziemlich weit hinter der neuesten stabilen Version (Rails 2.3).Wie sollte ich eine Rails-App auf die neueste Version von Rails aktualisieren?

Wie soll ich über den Prozess gehen von auf eine neuere Version von Rails zu verschieben?

Sollte ich eine einzelne Version auf einmal aktualisieren oder direkt auf Rails 2.3?

Wie ich heraus finde, was zwischen den Versionen von Rails, beide

  • Verbesserungen oder neue Funktionen geändert hat, die mir mehr Gründe geben
  • Rails Änderungen zu aktualisieren, die mich benötigen, um meinen app, bevor es zu ändern wird mit der neuen Version arbeiten.

(Ich habe this question auf der Mechanik der Modernisierung gesehen, aber ich bin mehr daran interessiert, den Prozess soll ich gehen durch das Upgrade so schmerzlos wie möglich zu machen.)

Antwort

4

Ich habe das ein paar Monate zurück gemacht, viel recherchiert und eine Rake-Aufgabe zusammengestellt (basierend auf dem Skript von jemand anderem und zusätzlichen Ressourcen), die Ihnen helfen könnte, Dinge in Ihrem Code zu ändern. Dies war für das Upgrade auf Rails 2.2, so dass es Rails 2 nicht berücksichtigt.3 Änderungen:

http://gist.github.com/99535

Oh, sicher sein, zu überprüfen, ob die Plugins und Edelsteine ​​Sie verwenden sind Rails 2.x kompatibel und die neuesten Versionen verwenden.

Und ich stimme auf jeden Fall mit dem Upgrade direkt 2.3 in einem Rutsch Rails. Und schalte es nicht weiter aus; Je länger Sie ohne Upgrade gehen, desto schwieriger wird es, da sich mehr geändert hat. Und es ist schwieriger, Rails 1.x-Code zu verwalten, da weniger Ressourcen dies unterstützen.

0

Ich werde meinen beginnen mit der Beantwortung eigene Frage mit den Ressourcen, die ich mit meinem Googeln gefunden habe. Die Rails 2.2 release note und Rails 2.3 release note geben Details der neuen und geänderten Features in diesen beiden Versionen, aber ich kann nichts so definitiv für frühere Versionen finden.

Ich habe auch nicht viel darüber gefunden, was bei der Aktualisierung brechen wird, abgesehen von this release announcement, die erwähnt, dass ältere Versionen von Passenger nicht mit Rails 2.3 arbeiten werden.

1

Ich denke, es gibt einige Rails Aufgaben Rake gibt, könnten Sie das für Veraltete in Ihrer Anwendung aussehen wird erhalten.

Und solange Ihre App in der Versionskontrolle ist, würde ich das Upgrade in einem Schuss machen und die Fehlermeldungen nacheinander durchlaufen.

Abgesehen von den Versionshinweisen, die Sie für 2.2 & 2.3 gesehen haben, sollte es Versionshinweise oder Änderungsprotokolle in der Quelle selbst geben. Außerdem können Sie nach Blog-Posts suchen (verwenden Sie Google Blog-Suche) mit Suchbegriffen wie "rails xxx new features", etc.

2

Mein Rat ist, eine Woche zu verbringen, um alle Test-Schulden abzuzahlen, die Sie angesammelt haben, und dann Mach das Upgrade auf einen Schlag.

Wo ich arbeite, haben wir letzten Sommer eine sehr große App von 1.2 auf 2.0.2 aufgerüstet und gleichzeitig auf Ruby 1.8.6 aufgerüstet.

Es dauerte viel länger als erwartet. Die App verwendete einige alte Features, die entfernt oder veraltet waren (wie ActionWebService), so dass die Konvertierung einige Zeit in Anspruch nahm. Aber meistens stießen wir auf eine Menge kleiner Fehler, wie zum Beispiel leichte Unterschiede in der Funktionsweise von Optionsfeldern, von denen einige auf das Upgrade von Ruby (vs. Rails) zurückzuführen waren.

Einige Teile der App hatten eine fleckige Testabdeckung. Wenn wir es mit besseren Tests gemacht hätten, wäre alles viel einfacher gewesen.

0

fand ich, dass diese Dokumente ein paar Details fehlten und von 2,1 => 2.2 dauerte eine ganze Weile zu bewegen. Hier sind meine Notizen:

Größte Zeit Spüle: assert_redirected_to hat sich stark verändert, nicht mehr Hashes unterstützt (? Haupt)

Außerdem müssen environment/test.rb einstellen Fälschungsschutz

Wenn jemand hat bekam Nachrichten über diese Punkte für 2.3 th deaktivieren wäre super super.

2

Ich habe gerade begonnen, eine Rails 1.2.3 Anwendung auf eine Rails 2.3.4-Umgebung zu aktualisieren. Die grundlegenden Schritte und Vorbehalte, die ich gestoßen sind:

  • erstellen Skelett Anwendung ähnlich wie Ihre Basisanwendung
  • Überprüfen Sie alle environment.rb Einstellungen, die Sie in der alten Anwendung haben, um zu sehen, ob diese in der neuen Version erforderlich sind.
  • Migrieren Sie alle .rhtml-Dateien auf .html.erb; entweder mit einem Skript oder manuell. In meinem Fall gab es mehr als 100 Dateien so zu automatisieren es war viel einfacher
  • Überprüfen Sie alle routes.rb Änderungen, die gegeben werden gemacht könnte müssen, dass RoR2.3.4 vereinfacht die Routen angeben.
  • Stellen Sie sicher, dass Sie ein gutes SCM-System zur Hand haben. zB entweder Git, SVN oder sogar CVS, so dass kleine inkrementelle Änderungen erfasst werden können.
  • Überprüfen Sie, welche Plugins Sie benötigen. Am Anfang habe ich einfach alle Plugins entfernt und tatsächlich waren einige obsolet für die Funktionalität, die in der portierten Anwendung implementiert werden sollte.
  • aktualisieren alle form_tag Einträge; zum Beispiel <%= form_tag :action => 'search' %> wird `<% form_tag: action => 'Suche' tun%> sonst werden Sie einige interessante Fehlermeldungen
  • Ebenso die <%= end_form_tag%> den Block, wie in` <% end% ändern bekommen> zu schließen
  • prüfen wenn Sie irgendwelche Plugins in der Version 1.2.3 haben, die jetzt aus dem Kern entfernt werden und als Plugins installiert und für Abhängigkeiten konfiguriert werden müssen. Ich hatte einige Probleme mit der in_place_edit und Anrufe an die Popup gemacht.

Wie andere gesagt haben, kann es länger als erwartet dauern. Ich habe etwa 30 Stunden an der Migration gearbeitet. Ich hatte geschätzt, dass es viel länger dauern würde; Das war gut. aber immer noch etwas mehr Arbeit, um die PDF-Generierung in Gang zu bringen.

Nur um es noch interessanter die Anwendung auf einer MS-Windows-Umgebung ausgeführt wurde; Ruby 1.8.7, Rails 1.2.3 und MS SQL Server. Ziel war die Migration in eine Linux-Umgebung; Ruby 1.9.x, Rails 2.3.4 und MySQL-Datenbank, so dass die MySQL-Server-Datenbank Migrationstools beteiligt.

0

Sie haben wahrscheinlich damit viel Erfahrung in diesem Punkt hatte, aber ich über diese während lief für eine andere Rails Suche 1.2> 2.3 Upgrade Frage, und dachte, dass ich in ein paar Ratschläge mich werfen würde:

Die größte Pause, die ich in einer relativ einfachen App hatte, war mit Paginierung. Ich fand das Classic Pagination Plugin ein Glücksfall dafür.

Verwandte Themen