idag markerar slutet på den andra veckan av min software engineering immersive course på Flatiron School. Läroplanen har varit starkt inriktad på att förstå de grundläggande grunderna i Ruby inklusive objektorientering, klassmetoder, klass instanser, arbetar med uppräkare, matriser, hashes, och objektrelationer.
de flesta, om inte alla ruby språk jag har skrivit är i Test Driven Development (TDD) miljö. Jag skriver kod för att klara Rspec-tester som har skrivits av någon annan eller mig själv. Verkligheten som gick upp för mig när jag närmade mig slutet av vecka två är att tillgängligheten av Rspec och informativa felmeddelanden inte kan antas. Av den anledningen fann jag djupare njutning i att skriva och klara mina egna tester med Pry som min sidekick.
denna pärla av alla ädelstenar (ja, gem installera behövs, pun också avsedd) är ett viktigt verktyg för felsökning, testning och bara ha en bra gammal snoop i din kod.
så, vad är Pry?
precis som IRB (Interactive Ruby) är Pry en typ av REPL (Läs, utvärdera, skriva ut, slinga). Det är häftigt eftersom i stället för kodning via IRB, du kan koda direkt i ditt program och sätta i en ’bindande.bänd var som helst i koden för att utvärdera programmet.
infoga ’ bindning.bänd in i din kod kommer att frysa ditt program vid dess införande. När programmet träffar bända, programmet kommer att öppna en REPL och vi får en chans att bända in vår kod och se vad som händer under huven.
för att använda, Installera först Pry gem
kör ”gem install pry” i kommandoraden.
använda Pry
jag har skapat ett exempel på en Partiklass som innehåller klass-och instansmetoder.
jag använder personligen ” bindande.pry ” i två vanliga fall, självklart, det finns många andra situationer som du skulle använda Pry.
instans ett: bända in värdet av ett argument som överförs till en metod.
gilla, jag undrar vad ”tillfälle” på rad 19 är?
jag satte en ” bindande.bänd ” längst ner så att jag kunde bända in i den här metoden. Notera ” bindande.pry ” fungerar inte om jag lägger den i mitt if/else-uttalande, så pry har placerats efter att tillståndsförklaringen är klar.
nu, när jag ringer på ”musik” – metoden i mitt program och kör min fil i terminalen, öppnas Pry REPL. Jag kan nu testa för att se vad värdet av ”tillfälle” från rad 19 är genom att skriva in ”tillfälle” i min terminal.
Hej, det är en ”födelsedag”! Eftersom vi vet att det är en födelsedag, kan vi vara säkra på att en gång springa, kommer den här metoden att återvända ”Grattis på födelsedagen till dig, grattis på födelsedagen till dig”. Sött!
instans två: bända in i uppräkningsbara metoder
i exemplet nedan kommer Klassmetoden ”all_party_types” att samla in alla typer av festtillfällen och returnera en rad alla tillfällen som någonsin har skapats i Partiklassen.
eftersom pry är ett fantastiskt felsökningsverktyg, låter det oss titta på värdena på nästan vad vi vill ha. Till exempel, Vad är inuti ”Party.alla ”(linje 31), eller” party ”(linje 31) eller ” party.tillfälle ” (linje 32)? Ger det oss de uppgifter vi förväntar oss?
om vi skriver vad vi vill bända in, kommer REPL att skriva ut exakt vad det är. Se,, nedan. Observera att ”objekt” och ” objekt.tillfälle ”visar oss bara en instans av” Party”, men om vi slår” exit ” i kommandoraden och kör dessa kommandon igen, kommer REPL att skriva ut nästa instans i slingan och visa oss nästa värde i matrisen.
Pry Tips
eftersom lagarbete gör drömarbetet, här är mina fyra bästa tips om att använda Pry.
- Kräv sedan anropa metoden innan du försöker bända
du måste ” kräva ’bända’ ”högst upp i filen och sedan anropa metoden först innan ”bindande.pry ” kommer att fungera.
2. Prying in i en slinga (”exit”)
du kan använda” exit ” för att bända in i returvärdet för nästa slinga.
till exempel, Om ” Party.alla ”innehåller en rad 3 instanser av” party”, skriver” exit ” i kommandoraden kommer att flytta till nästa instans av slingan. För varje instans av slingan kan du komma åt ”party” – värdet. Magi!
3. Tvinga ut ur slingan (”!!!”/”avsluta!”)
när du är klar med allt som snooping runt, kan du slå”!!!”eller” avsluta!”för att komma ur pry helt. ”exit ” utan”!”är också ett alternativ om du inte är nyfiken på en metod med en slinga.
4. Återställa pry (”reload-code”)
Vad är poängen med felsökning om du inte kan ändra din kod och testa på språng?
när du är klar med att uppdatera din kod kan du skriva” reload-code ” i kommandoraden. Detta återställer din pry-session med det nya programmet utan att manuellt behöva avsluta pry och sedan skriva in pry igen efter att du har gjort ändringar i ditt program.
så det är allt från mig. Lycklig felsökning!