Passer au contenu principal
AppSignal pour Ruby 3.0 est une version majeure car elle modifie la façon dont elle instrumente les autres gems, supprime la prise en charge des anciennes versions de Ruby, supprime l’intégration JavaScript intégrée et supprime les modules précédemment dépréciés. Suivez ce guide pour rendre le processus de mise à niveau plus fluide.

Mise à niveau vers la dernière série 2.x

Avant de passer à la gem AppSignal pour Ruby 3.0, veuillez d’abord effectuer la mise à niveau vers la dernière gem de la série 2.x. Cette version enregistrera et imprimera des avertissements de dépréciation pour les éléments qui seront supprimés dans la version 3.x de la gem. Exécutez les tests de votre application avec laquelle la gem est intégrée, corrigez tous les avertissements et erreurs de dépréciation que vous pourriez rencontrer. Cette étape de mise à niveau facilitera le processus de mise à niveau. Tout d’abord, dans le Gemfile de l’application, mettez à jour le verrou de version vers ~> 2.0 et exécutez bundle update appsignal dans un terminal, dans le même répertoire que le Gemfile.
# Gemfile

gem "appsignal", "~> 2.0"
Une fois que tous les avertissements de dépréciation apparus pendant les tests et l’exécution de l’application ont été résolus, supprimez le verrou de version du Gemfile et exécutez à nouveau bundle update appsignal pour passer à AppSignal pour Ruby 3.0.
# Gemfile

gem "appsignal"

Suppression de la prise en charge de Ruby 1.9

La série 3.x de la gem Ruby ne prendra plus en charge Ruby 1.9 et les versions antérieures. Ruby 1.9 a atteint sa fin de vie depuis le 23 février 2015 et ne devrait plus être utilisé en production. Les futures versions de la gem AppSignal pour Ruby pourront abandonner la prise en charge d’autres versions en fin de vie de Ruby. Veuillez effectuer la mise à niveau vers une version plus récente de Ruby pour continuer à utiliser AppSignal pour Ruby à l’avenir.

Compatibilité avec d’autres gems d’instrumentation

Dans la série 3.x, la gem AppSignal pour Ruby a modifié les composants internes de toutes ses intégrations avec d’autres gems. Au lieu d’utiliser le « method aliasing » pour fournir l’instrumentation, la série 3.x utilise Module.prepend (introduit dans Ruby 2.0), une méthode pour inclure des modules Ruby dans des classes et garantir que le module inclus est appelé en premier. Qu’est-ce que cela signifie pour vos applications ? D’autres gems d’instrumentation peuvent utiliser soit le method aliasing, soit la méthode Module.prepend pour fournir l’instrumentation. Ces méthodes d’instrumentation sont incompatibles entre elles si elles sont utilisées sur les mêmes méthodes Ruby. Si une gem utilise le method aliasing et une autre Module.prepend, l’application sera prise dans une boucle et lèvera une stack level too deep (SystemStackError). L’écosystème Ruby semble s’orienter vers la méthode Module.prepend pour fournir l’instrumentation, c’est pourquoi la gem AppSignal a mis à jour sa méthode d’instrumentation pour être plus compatible avec les autres gems. Si une application commence à rencontrer ce problème avec la série 3.x d’AppSignal pour Ruby, mettez à niveau les autres gems APM et de signalement d’erreurs dans l’application. Elles ont peut-être également été mises à jour pour utiliser Module.prepend. Si le problème persiste, veuillez contacter les mainteneurs des autres gems pour mettre à jour leur implémentation vers Module.prepend, et revenez à la série 2.x de la gem AppSignal pour Ruby pour l’instant. Veuillez également nous informer, afin que nous puissions tenir à jour une liste des gems compatibles. Pour plus d’informations et de contexte sur ce changement, consultez l’issue 603 sur le tracker de la gem Ruby.

Modules déplacés

Certains modules de la gem ont été déplacés ou renommés. La série 2.x de la gem imprimera un avertissement si elle rencontre l’un d’eux avec le nouvel emplacement du module appelé. Cet avertissement est imprimé par un fallback lorsque l’ancien nom de module est appelé. Cet avertissement ne sera plus imprimé si le nouveau nom de module est appelé à la place. Si une application étend ou monkeypatche un module AppSignal, le nom du module doit être mis à jour pour que le patch fonctionne à nouveau. Notez que nous ne fournissons pas de support pour ces patches. Si un module privé a été supprimé sans remplacement, nous ne fournissons plus l’intégration ou elle a été fusionnée dans un autre module.

Suppression de l’intégration JavaScript

La gem AppSignal pour Ruby incluait un middleware de suivi des exceptions JavaScript, qui a été supprimé dans la série 3.x. À la place, nous recommandons d’utiliser notre intégration JavaScript front-end AppSignal dédiée.

Options supprimées

Les options suivantes n’affecteront plus la gem AppSignal pour Ruby et peuvent être supprimées de vos applications.
  • enable_frontend_error_catching - option de configuration supprimée
    • APPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING - option de configuration de variable d’environnement supprimée
  • frontend_error_catching_path - option de configuration supprimée
    • APPSIGNAL_FRONTEND_ERROR_CATCHING_PATH - option de configuration de variable d’environnement supprimée

Classes supprimées

Les classes suivantes ont été supprimées de la gem Ruby et leur appel entraînera une NameError.
  • Appsignal::JSExceptionTransaction - classe de transaction JavaScript supprimée
  • Appsignal::Rack::JSExceptionCatcher - middleware supprimé

Suppression de la commande appsignal notify_of_deploy

La commande appsignal notify_of_deploy a été supprimée. À la place, nous recommandons d’utiliser l’option de configuration revision pour signaler les déploiements de manière plus précise. Pour plus d’informations sur les marqueurs de déploiement, veuillez consulter notre section sur les marqueurs de déploiement. Si l’option revision n’est pas un bon remplacement pour votre méthode de déploiement, veuillez consulter notre page d’API des marqueurs de déploiement pour savoir comment envoyer la requête pour notifier AppSignal des déploiements. Et consultez notre page Push & deploy pour votre application pour un exemple utilisant la configuration de votre application.

Dépréciations supprimées

Dans la série 2.x d’AppSignal pour Ruby et antérieures, certains comportements de la gem AppSignal ont pu être dépréciés. La plupart de ces dépréciations ont été supprimées dans la série 3.x. Sur la dernière version de la série 2.x d’AppSignal pour Ruby, toutes ces dépréciations devraient imprimer un avertissement vers STDERR et vers le fichier appsignal.log lorsqu’elles sont encore utilisées. Veuillez vérifier la sortie et les logs de l’application pendant l’utilisation de la dernière gem 2.x et corrigez tous les avertissements de dépréciation avant d’effectuer la mise à niveau. Chaque dépréciation devrait imprimer/journaliser un avertissement avec les modifications nécessaires pour résoudre l’avertissement.

Bienvenue dans la 3.x !

Ce guide devrait couvrir la mise à niveau de la plupart des applications Ruby vers 3.x. Si vous avez des questions, rencontrez des erreurs ou souhaitez de l’aide pour la mise à niveau vers la nouvelle version, n’hésitez pas à contacter le support.