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 imGemfile 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 und führen Sie bundle update appsignal erneut aus, um auf AppSignal für Ruby 3.0 zu aktualisieren.
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-SerieModule.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 KonfigurationsoptionAPPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING- entfernte Konfigurationsoption als Umgebungsvariable
frontend_error_catching_path- entfernte KonfigurationsoptionAPPSIGNAL_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 einemNameError.
Appsignal::JSExceptionTransaction- entfernte JavaScript-TransaktionsklasseAppsignal::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 dasappsignal.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.