Airbrake est un logiciel de surveillance des erreurs, que la plupart d'entre nous, développeurs, accueillons à bras ouverts. Il vous aide essentiellement à gérer les erreurs de production, en conservant un journal pour celles-ci, en capturant l'URL exacte, le nombre d'occurrences, le fichier coupable qui a provoqué l'erreur, dans l'ensemble, une trace complète de la pile sur laquelle vous pouvez vous appuyer.
Cela ressemble à ceci ;
Ce que vous voyez ci-dessus est un instantané d'une erreur résolue, en particulier l'erreur AbstractController :: ActionNotFound.
Comme vous pouvez le voir, toutes les informations sont magnifiquement décomposées pour toute l'aide nécessaire au débogage. Et ce n'est qu'un des onglets, vous y trouverez plus d'informations à explorer.
Pour les applications Ruby on Rails, vous pouvez intégrer Airbrake en regroupant la gemme airbrake. Quelques étapes qui suivent ce processus sont décemment résumées sur la page GitHub du Gem. Vous pouvez accéder à cette page en suivant la page Airbrake GitHub
Alors, venons-en aux erreurs maintenant. Comment procédez-vous pour les réparer ?
Vous pouvez soit désactiver l'erreur, de cette façon Airbrake ne criera pas à pleins poumons pour que vous la corrigiez. Il apparaîtra toujours dans la liste des erreurs, afin que vous puissiez le récupérer à votre convenance, alors ne vous inquiétez pas qu'il se perde dans un trou noir d'erreurs.
Vient maintenant l’essentiel : les résoudre. En creusant dans votre code pour déterminer la cause première et en la corrigeant à ce niveau précis.
Essayons d'en analyser un.
Celui que vous avez vu ci-dessus, AbstractController::ActionNotFound . Examinons celui-ci.
Après avoir laissé cette erreur jouer avec ma santé mentale pendant un certain temps, j'ai pu en déduire la cause. C'est le résultat d'une mauvaise requête du serveur. Quelqu'un essayait de déjouer l'application, en modifiant l'URL de la page sur laquelle il se trouvait à ce moment-là et en atterrissant sur une page sortie de son imagination. Comment je suis arrivé à cette conclusion en reproduisant la même chose sur mon système local. J'ai essayé de suivre l'URL, en modifiant la chaîne hôte et le tour est joué ! La bête est sortie de sa cachette. Rails m'a accueilli en me disant que l'action que j'avais demandée n'existait pas. Ceci étant le résultat d'actions aléatoires de l'utilisateur, c'était une erreur qui ne pouvait pas vraiment être limitée car je n'avais aucun contrôle sur ce que l'utilisateur déciderait de visiter !
C’est à ce moment-là que j’ai pu m’identifier à l’idiome « L’ignorance est un bonheur <3
J'ai donc ajouté le correctif pour cela dans mon fichier airbrake.rb, qui est l'un des fichiers d'initialisation de votre répertoire de projet.
Le bloc de code sauveur était ,
Fini avec ça !
Une autre beauté que j'ai rencontrée était l'erreur SidekiqStatus::Container::StatusNotFound.
Celui-ci était un peu délicat à déboguer. J'ai dû déranger mes coéquipiers et nous avons continué à nous gratter la tête pendant un bon moment.
Nos tâches en arrière-plan sont gérées à l’aide de Sidekiq.
Ainsi, Sidekiq n’obtenait pas le statut de quelque chose. Après avoir passé un certain temps, pas plus que ce que j'aurais dû *toux toux*, je suis arrivé à la cause profonde. Cela se produisait parce qu'il y avait un appel Javascript dans le code lié à l'événement DOMSubtreeModified (qui est désormais obsolète, référence : DOMSubtreeModified Deprecated ). Sidekiq avait besoin d'un ID de travail pour renvoyer le statut, et l'appel pour obtenir l'ID de travail a été écrit dans le Javascript entouré par cet événement lié. Le script était appelé à chaque fois qu'il y avait un changement de niveau DOM dans la page, que le travail en arrière-plan soit en cours d'exécution ou non. Cela a parfois conduit à ce que l'ID de travail soit nul, ce qui a entraîné l'échec de la récupération du statut auprès de Sidekiq.
Le correctif consistait à remplacer ce code et à appeler explicitement la méthode chaque fois que l'action était requise. Cela a permis de gérer l'erreur, et lorsque nous avons essayé de la reproduire, rien ! Hourra!
Ce sont les deux erreurs que j'ai traitées le plus récemment et que j'ai ressenti le besoin de les documenter, pour référence future ainsi que pour d'autres développeurs susceptibles d'être confrontés à des problèmes similaires. C'est tout pour le moment.
RailsCarma combine des prouesses techniques avec une connaissance approfondie du secteur pour servir de partenaire idéal aux startups dans la création d'applications Ruby on Rails agréables, fonctionnelles et évolutives. Grâce à notre approche axée sur les solutions, votre entreprise bénéficie de résultats définitifs en termes de performances.
Alors, vous avez une bonne idée ? Nos experts seraient ravis d’explorer l’opportunité de la développer avec vous pour en faire une application à succès !
Acclamations!
Niyanta
Sauvegarder
Sauvegarder