Airbrake ist eine Fehlerüberwachungssoftware, die die meisten von uns Entwicklern mit offenen Armen begrüßen. Im Grunde hilft es Ihnen, mit Produktionsfehlern umzugehen, indem es ein Protokoll dafür führt, die genaue URL, die Anzahl der Vorkommnisse, die Datei, die den Fehler verursacht hat, erfasst – alles in allem – einen vollständigen Stack-Trace, auf den Sie zurückgreifen können.
Es sieht ungefähr so aus;
Was Sie oben sehen, ist eine Momentaufnahme eines behobenen Fehlers, insbesondere des AbstractController::ActionNotFound-Fehlers.
Wie Sie sehen können, sind alle Informationen schön aufgeschlüsselt, um die beim Debuggen benötigte Hilfe zu bieten. Und dies ist nur eine der Registerkarten. Dort finden Sie weitere Informationen, die Sie sich ansehen können.
Für Ruby on Rails-Anwendungen können Sie Airbrake integrieren, indem Sie das Airbrake-Gem bündeln. Ein paar Schritte, die diesem Prozess folgen, sind auf der GitHub-Seite für Gem gut zusammengefasst. Sie können diese Seite über die Airbrake-GitHub-Seite erreichen
Kommen wir nun zu den Fehlern. Wie gehen Sie vor, um sie zu beheben?
Sie können den Fehler entweder stummschalten, damit Airbrake nicht aus vollem Halse schreit, Sie sollen den Fehler beheben. Es wird weiterhin in der Fehlerliste angezeigt, sodass Sie es jederzeit abrufen können. Machen Sie sich also keine Sorgen, dass es in einem schwarzen Loch voller Fehler verloren geht.
Jetzt kommt die Hauptsache, sie zu lösen. Indem Sie in Ihrem Code nach der Grundursache suchen und diese auf dieser Ebene beheben.
Versuchen wir, eines zu analysieren.
Das, was Sie oben gesehen haben, AbstractController::ActionNotFound . Lassen Sie uns das genauer unter die Lupe nehmen.
Nachdem ich diesen Fehler einige Zeit mit meinem Verstand spielen ließ, konnte ich die Ursache ableiten. Es ist das Ergebnis einer fehlerhaften Anfrage vom Server. Jemand versuchte, die Anwendung auszutricksen, indem er/sie die URL der Seite, auf der er/sie sich gerade befand, änderte und auf einer Seite seiner/ihrer Fantasie landete. Zu diesem Schluss kam ich, indem ich dasselbe auf meinem lokalen System reproduzierte. Ich habe versucht, der URL zu folgen, indem ich die Hostzeichenfolge bearbeitet habe, und voilà! Das Biest kam aus seinem Versteck. Ich wurde von Rails begrüßt und sagte mir, dass die von mir angeforderte Aktion nicht existierte. Da dies auf zufällige Aktionen des Benutzers zurückzuführen war, war ein Fehler, der nicht wirklich eingeschränkt werden konnte, da ich keine Kontrolle darüber hatte, was der Benutzer besuchen würde!
Da konnte ich mich tatsächlich mit der Redewendung „Unwissenheit ist Glückseligkeit“ identifizieren <3
Daher habe ich den Fix dafür in meine Datei „airbrake.rb“ eingefügt, die eine der Initialisierungsdateien in Ihrem Projektverzeichnis ist.
Der rettende Codeblock war:
Fertig damit!
Eine weitere solche Schönheit, auf die ich gestoßen bin, war der SidekiqStatus::Container::StatusNotFound-Fehler.
Dieses Problem war etwas schwierig zu debuggen. Ich musste meine Teamkollegen belästigen und wir zweifelten eine ganze Weile am Kopf.
Unsere Hintergrundjobs werden mit Sidekiq abgewickelt.
Sidekiq bekam also keinen Status. Nachdem ich einige Zeit aufgewendet hatte, nicht mehr als ich hätte haben sollen *hust hust*, bin ich der Ursache auf den Grund gegangen. Dies geschah, weil es einen Javascript-Aufruf im Code gab, der an das Ereignis DOMSubtreeModified gebunden war (das jetzt veraltet ist, Referenz: DOMSubtreeModified Deprecated). Sidekiq benötigte eine Job-ID, um den Status zurückzugeben, und der Aufruf zum Abrufen der Job-ID wurde in das von diesem gebundenen Ereignis eingeschlossene Javascript geschrieben. Das Skript wurde jedes Mal aufgerufen, wenn sich die DOM-Ebene auf der Seite änderte, unabhängig davon, ob der Hintergrundjob ausgeführt wurde oder nicht. Dies führte dazu, dass die Job-ID zeitweise Null war, was dazu führte, dass der Status nicht mehr von Sidekiq abgerufen werden konnte.
Die Lösung hierfür bestand darin, diesen Code zu ersetzen und die Methode jedes Mal explizit aufzurufen, wenn die Aktion erforderlich war. Dadurch konnte der Fehler behoben werden, und als wir versuchten, ihn zu reproduzieren, passierte nichts! Hurra!
Dies sind die beiden Fehler, mit denen ich mich zuletzt beschäftigt habe, und ich hatte das Bedürfnis, sie zu dokumentieren, sowohl als Referenz für die Zukunft als auch für andere Entwickler da draußen, die möglicherweise mit ähnlichen Problemen konfrontiert sind. Das ist alles für den Moment.
SchienenCarma kombiniert technisches Können mit fundierten Branchenkenntnissen und dient so als perfekter Partner für Startups bei der Entwicklung angenehmer, funktionaler und skalierbarer Ruby on Rails-Anwendungen. Mit unserem lösungsorientierten Ansatz kann Ihr Unternehmen definitive Ergebnisse in Bezug auf die Leistung erzielen.
Haben Sie eine tolle Idee? Unsere Experten würden gerne gemeinsam mit Ihnen die Möglichkeit erkunden, daraus eine erfolgreiche App zu entwickeln!
Prost!
Niyanta
Speichern
Speichern