Airbrake är ett felövervakningsprogram, som de flesta av oss utvecklare välkomnar med öppna armar. Det hjälper dig i princip att hantera produktionsfel, genom att upprätthålla en logg för detsamma, fånga den exakta URL:en, antalet förekomster, den skyldige filen som orsakade felet, allt som allt, en komplett stackspårning för dig att falla tillbaka på.
Det ser ut ungefär så här;
Det du ser ovan är en ögonblicksbild av ett löst fel, specifikt AbstractController::ActionNotFound-fel.
Som du kan se är all information vackert uppdelad för all hjälp som behövs vid felsökning. Och det här är bara en av flikarna, det finns mer information för dig att gräva i.
För Ruby on Rails-applikationer kan du integrera Airbrake genom att bunta ihop airbrake-pärlan. Ett par steg som följer denna process är anständigt sammanfattade på GitHub-sidan för Gem. Du kan nå den sidan efter Airbrake GitHub-sidan
Så, kommer till felen nu. Hur går du tillväga för att fixa dem?
Du kan antingen stänga av felet, på så sätt kommer Airbrake inte att ropa på lungorna för att du ska fixa det. Det kommer fortfarande att dyka upp i fellistan, så att du kan hämta det när det passar dig, så oroa dig inte för att det försvinner i ett svart hål av fel.
Nu kommer det viktigaste, att lösa dem. Genom att gräva upp i din kod för att fastställa grundorsaken och åtgärda den på just den nivån.
Låt oss försöka analysera en.
Den du såg ovan, AbstractController::ActionNotFound . Låt oss granska den här.
Efter att ha låtit detta fel spela med mitt förstånd under en tid kunde jag härleda orsaken. Det är resultatet av en dålig begäran från servern. Någon försökte överlista applikationen genom att redigera webbadressen till sidan han/hon var på vid det ögonblicket och landa på en sida från hans fantasi. Hur jag kom till denna slutsats var genom att återskapa detsamma på mitt lokala system. Jag försökte följa URL:en genom att redigera värdsträngen och voila! Odjuret kom ut ur sitt gömställe. Jag möttes av Rails som berättade för mig att åtgärden jag begärde inte fanns. Detta är ett resultat av slumpmässiga handlingar från användaren, var ett fel som egentligen inte kunde begränsas eftersom jag inte hade kontroll över vad användaren skulle bestämma sig för att besöka!
Det var då jag faktiskt kunde relatera till formspråket, Ignorance is bliss <3
Så jag lade till fixen för detta i min airbrake.rb-fil, som är en av initialiseringsfilerna i din projektkatalog.
Frälsarens kodblock var ,
Klar med det!
En annan sådan skönhet jag stötte på var SidekiqStatus::Container::StatusNotFound-felet.
Den här var lite knepig att felsöka. Jag var tvungen att störa mina lagkamrater och vi kliade oss i huvudet ganska länge.
Våra bakgrundsjobb hanteras med Sidekiq.
Så, Sidekiq fick inte status av något. Efter att ha spenderat lite tid, inte mer än att jag borde ha *hosthosta*, kom jag till grundorsaken. Det hände eftersom det fanns ett Javascript-anrop i koden som var bunden till händelsen DOMSubtreeModified (som nu är utfasad, referens: DOMSubtreeModified Deprecated ). Sidekiq behövde ett jobb-ID för att returnera status, och anropet för att få jobb-ID skrevs inuti Javascript som omges av denna bundna händelse. Skriptet anropades varje gång det var någon DOM-nivåändring på sidan, oavsett om bakgrundsjobbet kördes eller inte. Detta ledde till att jobb-ID ibland var noll, vilket ledde till misslyckande med att hämta status från Sidekiq.
Korrigeringen för detta var att ersätta den koden och anropa metoden uttryckligen varje gång åtgärden krävdes. Detta kunde hantera felet, och när vi försökte återskapa det, ingenting! Hurra!
Det här är de två felen som jag tog itu med senast, och kände ett behov av att dokumentera det, för framtida referens såväl som för andra utvecklare där ute som kan möta liknande problem. Det var allt tills vidare.
RailsCarma kombinerar teknisk skicklighet med djupgående branschinsikt för att fungera som en perfekt partner för startups när det gäller att skapa trevliga, funktionella och skalbara Ruby on Rails-applikationer. Med vårt lösningsfokuserade tillvägagångssätt får ditt företag njuta av definitiva resultat när det gäller prestanda.
Så, har du en bra idé? Våra experter vill gärna utforska möjligheten att utveckla den till en framgångsrik app med dig!
Skål!
Niyanta
Spara
Spara