Zum Hauptinhalt springen
AppSignal für Ruby 3.0 ist ein Major-Release, da es die Art und Weise ändert, wie es andere Gems instrumentiert, die Unterstützung für ältere Ruby-Versionen entfernt, die integrierte JavaScript-Integration entfernt und zuvor veraltete Module entfernt. Folgen Sie diesem Leitfaden, um den Upgrade-Prozess reibungsloser zu gestalten.

Upgrade auf die neueste 2.x-Serie

Bevor Sie auf das AppSignal für Ruby-Gem 3.0 upgraden, upgraden Sie bitte zuerst auf das neueste Gem der 2.x-Serie. Diese Version protokolliert und gibt Verfallswarnungen für Dinge aus, die in Version 3.x des Gems entfernt werden. Führen Sie die Tests für Ihre App, in die das Gem integriert ist, aus und beheben Sie alle Verfallswarnungen und Fehler, denen Sie begegnen. Dieser Upgrade-Schritt erleichtert den Upgrade-Prozess. Aktualisieren Sie zunächst im Gemfile der App die Versionssperre auf ~> 2.0 und führen Sie bundle update appsignal in einem Terminal im selben Verzeichnis wie das Gemfile aus.
# Gemfile

gem "appsignal", "~> 2.0"
Nachdem alle während des Testens und Ausführens der App aufgetretenen Verfallswarnungen behoben wurden, entfernen Sie die Versionssperre aus dem Gemfile und führen Sie bundle update appsignal erneut aus, um auf AppSignal für Ruby 3.0 zu aktualisieren.
# Gemfile

gem "appsignal"

Unterstützung für Ruby 1.9 entfernt

Die 3.x-Serie des Ruby-Gems unterstützt Ruby 1.9 und ältere Versionen nicht mehr. Ruby 1.9 hat seit dem 23. Februar 2015 sein End of Life erreicht und sollte nicht mehr in der Produktion verwendet werden. Zukünftige Versionen des AppSignal für Ruby-Gems können weitere End-of-Life-Versionen von Ruby ablegen. Bitte upgraden Sie auf eine neuere Version von Ruby, um AppSignal für Ruby in Zukunft weiterhin zu verwenden.

Kompatibilität mit anderen Instrumentierungs-Gems

In der 3.x-Serie hat das AppSignal für Ruby-Gem die Interna aller seiner Integrationen anderer Gems geändert. Statt Methoden zu aliasieren, um Instrumentierung bereitzustellen, verwendet die 3.x-Serie Module.prepend (eingeführt in Ruby 2.0), eine Methode, um Ruby-Module in Klassen einzubinden und sicherzustellen, dass das eingebundene Modul zuerst aufgerufen wird. Was bedeutet das für Ihre Apps? Andere Instrumentierungs-Gems können entweder Methoden-Aliasing oder Module.prepend verwenden, um Instrumentierung bereitzustellen. Diese Instrumentierungsmethoden sind miteinander inkompatibel, wenn sie auf denselben Ruby-Methoden verwendet werden. Wenn ein Gem Methoden-Aliasing verwendet und ein anderes Module.prepend, wird die App in einer Schleife gefangen und löst einen stack level too deep (SystemStackError) aus. Das Ruby-Ökosystem scheint sich in Richtung der Module.prepend-Methode zur Bereitstellung von Instrumentierung zu bewegen, daher hat das AppSignal-Gem seine Instrumentierungsmethode aktualisiert, um mit anderen Gems kompatibler zu sein. Wenn eine App mit der 3.x-Serie des AppSignal für Ruby-Gems auf dieses Problem stößt, upgraden Sie andere APM- und Fehlerberichts-Gems in der App. Sie wurden möglicherweise ebenfalls aktualisiert, um mit Module.prepend zu instrumentieren. Wenn das Problem weiterhin besteht, kontaktieren Sie bitte die Maintainer der anderen Gems, um ihre Implementierung auf Module.prepend zu aktualisieren, und downgraden Sie das AppSignal für Ruby-Gem vorerst auf die 2.x-Serie. Bitte informieren Sie uns auch, damit wir eine Liste kompatibler Gems pflegen können. Weitere Informationen und Hintergründe zu dieser Änderung finden Sie in Issue 603 im Issue-Tracker des Ruby-Gems.

Verschobene Module

Einige Module im Gem wurden verschoben oder umbenannt. Die 2.x-Serie des Gems gibt eine Warnung aus, wenn sie auf eines mit dem neuen Speicherort des aufgerufenen Moduls trifft. Diese Warnung wird von einem Fallback ausgegeben, wenn der alte Modulname aufgerufen wird. Diese Warnung wird nicht mehr ausgegeben, wenn stattdessen der neue Modulname aufgerufen wird. Wenn eine App ein AppSignal-Modul erweitert oder gemonkey-patched hat, muss der Modulname aktualisiert werden, damit der Patch wieder funktioniert. Beachten Sie, dass wir für diese Patches keinen Support bieten. Wenn ein privates Modul ersatzlos entfernt wurde, bieten wir die Integration nicht mehr an oder sie wurde in ein anderes Modul integriert.

JavaScript-Integration entfernt

Das AppSignal für Ruby-Gem enthielt eine JavaScript-Exception-Tracking-Middleware, die in der 3.x-Serie entfernt wurde. Stattdessen empfehlen wir, unsere dedizierte AppSignal für Front-End-JavaScript-Integration zu verwenden.

Entfernte Optionen

Die folgenden Optionen wirken sich nicht mehr auf das AppSignal für Ruby-Gem aus und können aus Ihren Apps entfernt werden.
  • enable_frontend_error_catching - entfernte Konfigurationsoption
    • APPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING - entfernte Konfigurationsoption als Umgebungsvariable
  • frontend_error_catching_path - entfernte Konfigurationsoption
    • APPSIGNAL_FRONTEND_ERROR_CATCHING_PATH - entfernte Konfigurationsoption als Umgebungsvariable

Entfernte Klassen

Die folgenden Klassen wurden aus dem Ruby-Gem entfernt, und ihr Aufruf führt zu einem NameError.
  • Appsignal::JSExceptionTransaction - entfernte JavaScript-Transaktionsklasse
  • Appsignal::Rack::JSExceptionCatcher - entfernte Middleware

Befehl appsignal notify_of_deploy entfernt

Der Befehl appsignal notify_of_deploy wurde entfernt. Stattdessen empfehlen wir die Verwendung der Konfigurationsoption revision, um Deploys genauer zu melden. Weitere Informationen zum Thema Deploy-Marker finden Sie in unserem Abschnitt Deploy-Marker. Wenn die revision-Option kein guter Ersatz für Ihre Deploy-Methode ist, verwenden Sie bitte unsere Deploy-Marker-API-Seite, um zu erfahren, wie Sie die Anfrage senden, um AppSignal über Deploys zu benachrichtigen. Und sehen Sie sich unsere Push & Deploy-Seite für Ihre App an, um ein Beispiel mit der Konfiguration Ihrer App zu sehen.

Entfernte Verfallsmeldungen

In den AppSignal für Ruby 2.x-Serien und älter wurde manches Verhalten des AppSignal-Gems als veraltet markiert. Die meisten dieser Verfallsmeldungen wurden in der 3.x-Serie entfernt. Auf dem neuesten Release der AppSignal für Ruby 2.x-Serie sollten all diese Verfallsmeldungen eine Warnung an STDERR und an das appsignal.log ausgeben, wenn sie noch verwendet werden. Bitte prüfen Sie die App-Ausgabe und die Logs, während Sie auf der neuesten 2.x-Serie sind, und beheben Sie alle Verfallswarnungen, bevor Sie upgraden. Jede Verfallswarnung sollte eine Warnung mit den notwendigen Änderungen zur Behebung ausgeben/loggen.

Willkommen bei 3.x!

Dieser Leitfaden sollte das Upgrade der meisten Ruby-Anwendungen auf 3.x abdecken. Wenn Sie Fragen haben, auf Fehler gestoßen sind oder Unterstützung beim Upgrade auf die neue Version benötigen, zögern Sie bitte nicht, den Support zu kontaktieren.