vandaag is het einde van de tweede week van mijn Software engineering immersive cursus aan Flatiron School. Het curriculum is sterk gericht op het begrijpen van de kern fundamentals van Ruby met inbegrip van object oriëntatie, klasse methoden, klasse instanties, het werken met enumerators, arrays, hashes, en object relaties.
de meeste, zo niet alle, ruby taal die ik heb geschreven bevindt zich in de Test Driven Development (TDD) omgeving. Ik schrijf code om Rspec-tests te doorstaan die door iemand anders of mijzelf zijn geschreven. De realiteit die op me daagde toen ik het einde van week twee naderde, is dat de beschikbaarheid van Rspec en informatieve foutmeldingen niet kan worden aangenomen. Om die reden, vond ik dieper plezier in het schrijven en het slagen van mijn eigen tests met Pry als mijn sidekick.
dit juweeltje van alle edelstenen (Ja, gem installatie nodig, pun ook bedoeld) is een essentieel hulpmiddel voor het debuggen, testen en gewoon een goede oude snoop in uw code.
dus, wat is wrikken?
net als IRB (Interactive Ruby), is Pry een type REPL (lezen, evalueren, afdrukken, Loop). Het is geweldig, want in plaats van coderen via IRB, kunt u direct code in uw programma en zet in een ‘binding.zoek overal in de code om het programma te evalueren.
binding invoegen.in je code prikken zal je programma bevriezen op het moment dat het wordt ingevoerd. Als het programma pry raakt, zal het programma een REPL openen en krijgen we de kans om in onze code te wrikken en te zien wat er onder de motorkap gebeurt.
te gebruiken, Installeer eerst Pry gem
voer “gem install pry” uit op de commandoregel.
met behulp van Pry
heb ik een voorbeeld gemaakt van een Party class die class en instance methodes bevat.
Ik gebruik persoonlijk ” binding.wrikken ” in twee veel voorkomende gevallen zijn er natuurlijk veel andere situaties die je wrikken zou gebruiken.
Instance One: peilen naar de waarde van een argument dat in een methode wordt doorgegeven.
zoals, ik vraag me af wat “gelegenheid” op lijn 19 is?
ik zet een ” binding.wrikken ” op de bodem, zodat ik kon wrikken in deze specifieke methode. Opmerking ” binding.pry ” werkt niet als ik het in mijn if/else statement zet, dus de pry is geplaatst nadat de conditie statement klaar is.
als ik nu de “muziek” methode in mijn programma aanroep en mijn bestand in de terminal uitvoer, zal de Pry REPL openen. Ik kan nu testen om te zien wat de waarde van “gelegenheid” van regel 19 is door het typen van “gelegenheid” in mijn terminal.
Hey, het is een “verjaardag”! Omdat we weten dat het een verjaardag is, kunnen we er zeker van zijn dat zodra het wordt uitgevoerd, deze methode zal terugkeren “Happy Birthday to you, Happy Birthday to you”. Gaaf!
voorbeeld twee: nieuwsgierig naar enumerable methods
in het voorbeeld hieronder, zal de Class methode “all_party_types” Alle Party occasion types verzamelen en een array retourneren van alle gelegenheden die ooit in de Party class zijn gemaakt.
omdat pry is een geweldige debugging tool, het laat ons kijken naar de waarden van bijna alles wat we willen. Bijvoorbeeld, wat er in ” Party.alle “(lijn 31), of” partij “(lijn 31) of ” partij.occasion ” (Lijn 32)? Geeft het ons de gegevens die we verwachten?
als we typen waar we in willen wrikken, zal de REPL precies afdrukken wat het is. Zie,, hieronder. Merk op dat “item” en ” item.occasion “toont ons slechts één exemplaar van “Party”, maar als we op” exit “in de commandoregel drukken en deze commando’ s opnieuw uitvoeren, zal de REPL de volgende instantie in de lus afdrukken en ons de volgende waarde in de array tonen.
Pry Tips
omdat teamwork het droomwerk maakt, zijn hier mijn top vier tips over het gebruik van Pry.
- Require dan aanroepen van de methode voordat u probeert te pry
u moet “require ‘pry’ “aan de bovenkant van uw bestand en dan aanroepen van de methode eerst voor” binding.wrikken zal werken.
2. Prying into a lus (“exit”)
u kunt” exit ” gebruiken om in de return waarde van de volgende lus te pryen.
bijvoorbeeld, if ” partij.all “bevat een array van 3 instanties van “party”, het typen van” exit ” in uw opdrachtregel zal naar de volgende instantie van de lus gaan. Voor elke instantie van de lus, kunt u toegang krijgen tot de “partij” waarde. Magie!
3. Forceer uit de lus te stappen (“!!!”/”exit!”)
als je klaar bent met al dat rondsnuffelen, kun je “!!!”of” exit!”om helemaal uit de wirwar te komen. “exit” zonder de”!”is ook een optie als je niet nieuwsgierig in een methode met een lus.
4. Resetten van pry (“reload-code”)
Wat is het nut van debuggen als u uw code niet kunt wijzigen en onderweg kunt testen?
zodra u klaar bent met het bijwerken van uw code kunt u “reload-code” typen in uw opdrachtregel. Dit zal uw pry sessie met het nieuwe programma opnieuw instellen zonder handmatig uit pry te hoeven verlaten en vervolgens opnieuw pry in te voeren nadat u wijzigingen in uw programma hebt aangebracht.
dus, dat is alles van mij. Veel plezier met debuggen!