Debuggen met Pry: een beginner 's Guide

tijdens het werken door het pre-bootcamp cursuswerk van Flatiron School, vond ik mezelf voortdurend worstelen om te controleren en debuggen return waarden binnen iteraties en geneste data structuren. Het Learn.co curriculum introduceerde een tool genaamd Pry, maar ik had moeite om te begrijpen hoe het te implementeren in mijn code. Pas in een moeilijk lab met de naam Hashketball klikte het eindelijk. Na het worstelen door het lab voor veel te lang, ik uiteindelijk gedwongen mezelf om te lezen door de documentatie van Pry en mijn vermogen om te schrijven en debuggen hash iteraties onmiddellijk verbeterd.

als je ooit moeite hebt om een Ruby-programma uit te bouwen, kan Pry een onschatbare tool in je arsenaal blijken te zijn. Pry is een krachtige tool die Ruby-ontwikkelaars kunnen gebruiken om programma ‘ s te debuggen en voorbij hindernissen te duwen. Net als andere Ruby edelstenen, de Pry gem moet worden vereist in uw omgeving instellingen of specifieke ruby bestand om toegang te krijgen tot de functionaliteit. Daarnaast zijn er verschillende Wireless plugins, waaronder Wireless-doc en Wireless-byebug, die de functies en mogelijkheden van de gem uit te breiden. U kunt denken van deze plugins als aparte edelstenen die moeten worden vereist in uw gemfile.

zodra u uw programma met de pry gem hebt geconfigureerd, is het tijd om uw code te openen en de vreugde te ervaren die met Pry wordt debuggen. Pry zit boordevol functies, maar de volgende voorbeelden benadrukken wat ik denk dat het meest nuttig zijn.

REPL (Read, Evaluate, Print, Loop)

Pry kan Ruby ’s geïntegreerde IRB shell vervangen en bouwt voort op IRB’ s REPL functionaliteit met enkele extra functies. Zowel IRB en Pry kunt u Ruby commando ‘ s uit te voeren in de terminal en ontvang onmiddellijke resultaten in de terminal. Het hebben van REPL functionaliteit in uw terminal is een zeer nuttig hulpmiddel waarmee u snel Ruby code te testen zonder het uitvoeren van uw hele programma. Laten we zeggen, bijvoorbeeld, dat u wilt herhalen over een array en zien welke waarden worden geretourneerd. Je kunt gewoon de array invoeren, een iterator gebruiken op die array, en je resultaten controleren:

merk op dat terwijl zowel IRB als wry dezelfde waarden retourneerden voor deze eenvoudige iteratie, de manier waarop wry prints naar de terminal er een beetje anders uitziet. Een van de voordelen van Pry ten opzichte van de standaard IRB is het gebruik van syntaxis highlighting. Andere functies die wry de rand over IRB geven omvatten:

  1. tabvoltooiing

  2. hulpprogramma ‘ s voor debuggen

  3. mogelijkheid om documentatie te bekijken

Runtime aanroep

misschien wel de meest nuttige functie van Pry is de mogelijkheid om de runtime van een programma in zijn sporen te stoppen. De Ruby programmer kan de pry console aanroepen tijdens runtime door het invoegen van de regel ‘binding.nieuwsgierig waar ze het programma willen stoppen. Als de tolk de binding raakt.pry, Pry opent een REPL-sessie in de console, zodat u variabelen kunt testen, waarden kunt retourneren, iteraties en meer.

het volgende is een voorbeeld van het nut van Pry als het gaat om het ontleden van geneste datastructuren in uw programma ‘ s. Ik heb onlangs bijgedragen aan de ontwikkeling van een dev job search CLI die zich baseerde op een database van vacatures gezaaid uit de Github Jobs API. De API data was gestructureerd in een JSON hash en onze database tabellen werden gezaaid met waarden van deze geneste hashes. De volgende afbeelding laat zien hoe we de tabel met bedrijven voor dit project hebben ingevuld:

bij het invullen van een database tabel, is het van vitaal belang dat records gaan in de tabel worden gemaakt met de juiste gegevens! Hoe kunnen we onze iteratiewaarden controleren om er zeker van te zijn dat alles werkt zoals verwacht? Het antwoord is nieuwsgierig. Een binding invoegen.wrikken aan het einde van het “bevolkende bedrijven” – blok stelt ons in staat return waarden te onderzoeken door de runtime te stoppen en een REPL-sessie in te voeren:

zodra de binding.pry wordt in het blok geplaatst, de code moet opnieuw worden uitgevoerd om de Pry console te openen. Wanneer de Pry console opent in onze terminal, zijn we binnen het blok dat de companies database table bevolkt en zijn we nu in staat om variabelen te testen en waarden te retourneren:

nu dat we hebben pried open de” bevolkings bedrijven ” blok, is het tijd om een aantal waarden te controleren! Wanneer ’taak’ wordt ingevoegd in de pry-console, wordt een hash voor een enkele taakopening afgedrukt op het scherm. De job hash heeft verschillende sleutels, waaronder type, url, bedrijf, company_url, locatie, titel, enz. Om er zeker van te zijn dat de juiste waarden naar de database worden verzonden, kunnen we de volgende commando ‘ s invoeren in de Pry terminal:

zodra we hebben vastgesteld dat onze iteratie functioneert zoals verwacht, de binding.pry kan worden verwijderd een onze tabel zal bevolken bij de volgende uitvoering van het programma!

documentatie en broncode browsen

laten we eerlijk zijn, een ontwikkelaar zijn betekent dat u sterk zult vertrouwen op Google. Ik vaak wenden tot het web om onderzoek Ruby methoden en schuren documentatie om ervoor te zorgen dat ik correct structureren syntaxis. Wat als ik je vertelde dat Pry biedt een plugin die u toelaat om te bladeren documentatie recht in uw console? Welkom in de pry-doc gem. Pry-doc stelt u in staat om Ruby documentatie te lezen binnen uw huidige Pry console sessie. Nu een voorbeeld. Laten we zeggen dat ik niet meer weet hoe de .zoek methode werkt op een hash. Ik kan het volgende commando invoeren in de console, en voilà! De Pry-console drukt de documentatie voor die methode af in de terminal:

hoera! Nu hebt u toegang tot nuttige documentatie in uw terminal zonder te vertrouwen op Google!

nuttige Pry-opdrachten

  1. pry-opent de Pry-console in uw terminal

  2. bindend.pry-stopt runtime en opent Pry console

  3. exit-Exits huidige lus

  4. uitgang! -Verlaat Wrikken console

  5. whereami -hiermee wordt de huidige locatie in het programma

  6. show-doc -Geeft-documentatie voor een klasse of methode van de klasse(en)

  7. geschiedenis -hiermee Drukt u de geschiedenis van de Wrikken commando ‘ s naar de terminal

  8. ls -Prints zijn de variabelen en methoden in de huidige scope van het programma

  9. help -hiermee wordt de huidige lijst van beschikbare Wrikken opdrachten

Wrikken drastisch verbeterde mijn vermogen om te debuggen Ruby-programma ‘ s en is de tool die ik altijd inschakelen wanneer ben ik vast. Ik hoop dat je deze tips en trucs nuttig vindt, en vergeet niet, wanneer je in het onkruid, zet een binding.wrikken erin!



+