Freno aerodinamico per il monitoraggio e il rilevamento degli errori

Airbrake è un software di monitoraggio degli errori, che la maggior parte di noi sviluppatori accoglie a braccia aperte. Fondamentalmente ti aiuta a gestire gli errori di produzione, mantenendo un registro per gli stessi, acquisendo l'URL esatto, il numero di occorrenze, il file colpevole che ha causato l'errore, tutto sommato, una traccia dello stack completa su cui puoi ricorrere.
Sembra qualcosa del genere;

Ciò che vedi sopra è un'istantanea di un errore risolto, in particolare l'errore AbstractController::ActionNotFound.
Come puoi vedere, tutte le informazioni sono suddivise magnificamente per tutto l'aiuto necessario nel debug. E questa è solo una delle schede, ci sono più informazioni da approfondire.

Per le applicazioni Ruby on Rails, puoi integrare Airbrake raggruppando la gemma Airbrake. Un paio di passaggi che seguono questo processo sono riassunti in modo decente nella pagina GitHub per Gem. Puoi raggiungere quella pagina seguendo la pagina GitHub di Airbrake

Veniamo ora agli errori. Come fai a sistemarli?
Puoi disattivare l'errore, in questo modo Airbrake non ti griderà a squarciagola di risolverlo. Verrà comunque visualizzato nell'elenco degli errori, in modo che tu possa riprenderlo quando preferisci, quindi non preoccuparti che si perda in un buco nero di errori.
Ora arriva la cosa principale: risolverli. Scavando nel codice per determinare la causa principale e risolvendola proprio a quel livello.

Proviamo ad analizzarne uno.
Quello che hai visto sopra, AbstractController::ActionNotFound . Esaminiamo attentamente questo.
Dopo aver lasciato che questo errore giocasse con la mia sanità mentale per un po' di tempo, sono stato in grado di dedurne la causa. È il risultato di una richiesta errata dal server. Qualcuno stava cercando di superare in astuzia l'applicazione, modificando l'URL della pagina su cui si trovava in quel momento e atterrando su una pagina della sua immaginazione. Il modo in cui sono arrivato a questa conclusione è stato riproducendo lo stesso sul mio sistema locale. Ho provato a seguire l'URL, modificando la stringa host e voilà! La bestia uscì dal suo nascondiglio. Sono stato accolto da Rails dicendomi che l'azione da me richiesta non esisteva. Essendo il risultato di azioni casuali dell'utente, era un errore che non poteva essere realmente limitato poiché non avevo il controllo su ciò che l'utente avrebbe deciso di visitare!
È stato allora che ho potuto effettivamente identificarmi con l'idioma, L'ignoranza è felicità <3
Quindi, ho aggiunto la correzione per questo problema nel mio file airbrake.rb, che è uno dei file di inizializzazione nella directory del progetto.
Il blocco del codice salvatore era:

Fatto!
Un'altra bellezza che ho riscontrato è stata l'errore SidekiqStatus::Container::StatusNotFound.

Questo è stato un po' complicato da eseguire il debug. Ho dovuto dare fastidio ai miei compagni e abbiamo continuato a grattarci la testa per un bel po'.
I nostri lavori in background vengono gestiti utilizzando Sidekiq.
Quindi, Sidekiq non stava ottenendo lo status di qualcosa. Dopo aver trascorso un po' di tempo, non più del dovuto, a *tosse tosse*, sono arrivato alla causa principale. Stava accadendo perché c'era una chiamata Javascript nel codice associato all'evento DOMSubtreeModified (che ora è deprecato, riferimento: DOMSubtreeModified Deprecated). Sidekiq aveva bisogno di un ID lavoro per restituire lo stato e la chiamata per ottenere l'ID lavoro è stata scritta all'interno del Javascript racchiuso da questo evento associato. Lo script veniva chiamato ogni volta che si verificava una modifica del livello DOM nella pagina, indipendentemente dal fatto che il processo in background fosse in esecuzione o meno. Ciò ha portato a volte l'ID lavoro a essere pari a zero, con conseguente errore nel recupero dello stato da Sidekiq.
La soluzione a questo problema stava sostituendo quel codice e chiamando esplicitamente il metodo ogni volta che era richiesta l'azione. Questo è stato in grado di gestire l'errore e quando abbiamo provato a riprodurlo, niente! Evviva!
Questi sono i due errori con cui ho avuto a che fare più di recente e ho sentito il bisogno di documentarli, per riferimento futuro e per altri sviluppatori là fuori che potrebbero affrontare tipi simili di problemi. È tutto per ora.

RailsCarma combina abilità tecniche con una conoscenza approfondita del settore per fungere da partner perfetto per le startup nella creazione di applicazioni Ruby on Rails piacevoli, funzionali e scalabili. Con il nostro approccio focalizzato sulla soluzione, la tua azienda potrà ottenere risultati definitivi in termini di prestazioni.

Allora, hai una grande idea? I nostri esperti vorrebbero esplorare insieme a te l'opportunità di svilupparla in un'app di successo!

Saluti!
Niyanta


Salva

Salva

Articoli correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItalian