Upgrade naar de laatste 2.x-serie
Voordat u upgradet naar AppSignal voor Ruby gem 3.0, upgrade dan eerst naar de laatste gem uit de 2.x-serie. Deze versie logt en print deprecatiewaarschuwingen voor zaken die in versie 3.x van de gem verwijderd worden. Voer de tests uit voor uw app waarmee de gem geïntegreerd is, los eventuele deprecatiewaarschuwingen en fouten op die u tegenkomt. Deze upgrade-stap maakt het upgraden gemakkelijker. Werk eerst in hetGemfile van de app de versievergrendeling bij naar ~> 2.0 en voer bundle update appsignal uit in een terminal in dezelfde directory als het Gemfile.
Gemfile en voert u opnieuw bundle update appsignal uit om te updaten naar AppSignal voor Ruby 3.0.
Ondersteuning voor Ruby 1.9 verwijderd
De 3.x-serie van de Ruby gem ondersteunt Ruby 1.9 en oudere versies niet meer. Ruby 1.9 is End of Life sinds 23 februari 2015 en zou niet meer in productie gebruikt moeten worden. Toekomstige versies van de AppSignal voor Ruby gem laten mogelijk andere End of Life versies van Ruby vallen. Upgrade naar een nieuwere versie van Ruby om AppSignal voor Ruby in de toekomst te blijven gebruiken.Compatibiliteit met andere instrumentation-gems
In de 3.x-serie heeft de AppSignal voor Ruby gem de interne werking veranderd van al zijn integraties met andere gems. In plaats van methodes te aliassen om instrumentation te bieden, gebruikt de 3.x-serieModule.prepend (geïntroduceerd in Ruby 2.0), een methode om Ruby-modules in klassen op te nemen en ervoor te zorgen dat de geïncludeerde module als eerste wordt aangeroepen.
Wat betekent dit voor uw apps?
Andere instrumentation-gems kunnen ofwel methode-aliasing ofwel de Module.prepend-methode gebruiken om instrumentation te bieden. Deze instrumentation-methoden zijn incompatibel met elkaar als ze op dezelfde Ruby-methoden gebruikt worden. Als de ene gem methode-aliasing gebruikt en de andere Module.prepend, raakt de app in een lus en wordt een stack level too deep (SystemStackError) geworpen.
Het Ruby-ecosysteem lijkt te bewegen richting de Module.prepend-methode voor het bieden van instrumentation, dus heeft de AppSignal gem zijn instrumentation-methode bijgewerkt om beter compatibel te zijn met andere gems.
Als een app dit probleem begint te ondervinden met de AppSignal voor Ruby 3.x-serie, upgrade dan andere APM- en error-reporting gems in de app. Mogelijk zijn ze ook bijgewerkt om met Module.prepend te instrumenteren.
Als het probleem zich blijft voordoen, neem dan contact op met de onderhouders van de andere gems om hun implementatie naar Module.prepend bij te werken, en downgrade de AppSignal voor Ruby gem voorlopig naar de 2.x-serie. Laat het ons ook weten, zodat we een lijst met compatibele gems kunnen bijhouden.
Voor meer informatie en achtergrond van deze wijziging, zie issue 603 in de issue tracker van de Ruby gem.
Verplaatste modules
Sommige modules in de gem zijn verplaatst of hernoemd. De 2.x-serie van de gem print een waarschuwing als hij een module tegenkomt met de nieuwe locatie van de aangeroepen module. Deze waarschuwing wordt geprint door een fallback wanneer de oude modulenaam wordt aangeroepen. Deze waarschuwing wordt niet meer geprint als de nieuwe modulenaam in plaats daarvan wordt aangeroepen. Als een app een AppSignal-module heeft uitgebreid of gemonkeypatcht, moet de modulenaam worden bijgewerkt om de patch weer te laten werken. Let op: we bieden geen ondersteuning voor deze patches. Als een privé-module zonder vervanging is verwijderd, bieden we die integratie niet meer aan of is deze samengevoegd met een andere module.JavaScript-integratie verwijderd
De AppSignal voor Ruby gem bevatte een JavaScript exception tracking middleware, die in de 3.x-serie is verwijderd. In plaats daarvan raden we u aan onze dedicated AppSignal voor Front-end JavaScript-integratie te gebruiken.Verwijderde opties
De volgende opties hebben geen effect meer op de AppSignal voor Ruby gem en kunnen uit uw apps verwijderd worden.enable_frontend_error_catching- verwijderde config-optieAPPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING- verwijderde config-optie via omgevingsvariabele
frontend_error_catching_path- verwijderde config-optieAPPSIGNAL_FRONTEND_ERROR_CATCHING_PATH- verwijderde config-optie via omgevingsvariabele
Verwijderde klassen
De volgende klassen zijn uit de Ruby gem verwijderd en het aanroepen ervan resulteert in eenNameError.
Appsignal::JSExceptionTransaction- verwijderde JavaScript transaction-klasseAppsignal::Rack::JSExceptionCatcher- verwijderde middleware
Het appsignal notify_of_deploy-commando verwijderd
Het appsignal notify_of_deploy-commando is verwijderd. In plaats daarvan raden we aan de revision config-optie te gebruiken om deploys nauwkeuriger te rapporteren. Voor meer informatie over deploy markers, zie onze deploy markers-sectie.
Als de revision-optie geen goede vervanging is voor uw deploy-methode, gebruik dan onze deploy markers API-pagina over hoe u de request kunt sturen om AppSignal van deploys op de hoogte te stellen. En zie onze Push & deploy-pagina voor uw app voor een voorbeeld met de config van uw app.
Verwijderde deprecaties
In de AppSignal voor Ruby 2.x-serie en ouder zijn sommige gedragingen van de AppSignal gem als verouderd gemarkeerd. De meeste van deze deprecaties zijn in de 3.x-serie verwijderd. In de laatste release van de AppSignal voor Ruby 2.x-serie zouden al deze deprecaties een waarschuwing moeten printen naar STDERR en naar hetappsignal.log wanneer ze nog gebruikt worden. Controleer de output en logs van de app terwijl u op de laatste 2.x-serie gem zit en los alle deprecatiewaarschuwingen op voor het upgraden. Elke deprecatie zou een waarschuwing moeten printen/loggen met de veranderingen die nodig zijn om de waarschuwing op te lossen.