Debugging with Pry: un ghid pentru începători's

în timp ce lucram prin cursurile pre-bootcamp oferite de Flatiron School, m-am trezit constant luptându-mă să verific și să depan valorile returnate în cadrul iterațiilor și structurilor de date imbricate. De Learn.co curriculum-ul a introdus un instrument numit Pry, dar am avut probleme în a înțelege cum să-l pună în aplicare în codul meu. Nu a fost până la un laborator dificil cu numele de Hashketball că lucrurile în cele din urmă a făcut clic. După ce m-am luptat prea mult timp prin laborator, m-am forțat în cele din urmă să citesc documentația lui Pry și capacitatea mea de a scrie și depana iterațiile hash s-au îmbunătățit imediat.

dacă te vei lupta vreodată să construiești un program Ruby, Pry s-ar putea dovedi a fi un instrument neprețuit în arsenalul tău. Pry este un instrument puternic pe care dezvoltatorii Ruby îl pot folosi pentru a depana programe și pentru a împinge obstacolele din trecut. Ca și alte pietre Ruby, bijuterie trageți trebuie să fie necesare în setările de mediu sau fișier ruby specifice pentru a accesa funcționalitatea. În plus, există mai multe pluginuri Pry, inclusiv pry-doc și pry-byebug, care extind caracteristicile și capacitățile gemului. Vă puteți gândi la aceste plugin-uri ca pietre separate, care trebuie să fie necesare în gemfile dumneavoastră.

odată ce ați configurat programul cu bijuterie Pry, este timpul să trageți deschide codul și experimenta bucuria care este depanare cu Pry. Pry este plin de caracteristici, dar următoarele exemple evidențiază ceea ce cred că este cel mai util.

REPL (Read, assess, Print, Loop)

Pry poate înlocui shell IRB integrat Ruby și se bazează pe funcționalitatea REPL IRB cu unele caracteristici suplimentare. Atât IRB cât și Pry vă permit să executați comenzi Ruby în terminal și să primiți rezultate imediate în terminal. A avea funcționalitate REPL în terminalul dvs. este un instrument foarte util care vă permite să testați rapid Codul Ruby fără a rula întregul program. Să presupunem, de exemplu, că doriți să iterați peste o matrice și să vedeți ce valori sunt returnate. Puteți introduce pur și simplu matrice, utilizați un iterator pe care matrice, și verificați rezultatele:

observați că, în timp ce atât IRB, cât și Pry au returnat aceleași valori pentru această iterație simplă, modul în care Pry imprimă terminalul arată puțin diferit. Unul dintre avantajele lui Pry față de IRB standard este utilizarea evidențierii sintaxei. Alte caracteristici care dau Pry marginea peste IRB includ:

  1. completarea filei

  2. instrumente de depanare

  3. abilitatea de a vizualiza documentația

runtime invocare

poate caracteristica cea mai utilă a Pry este capacitatea sa de a opri runtime unui program în piesele sale. Programatorul Ruby poate invoca consola pry în timpul rulării prin introducerea legării liniei.trageți oriunde ar dori să oprească programul. Când interpretul lovește legarea.pry, Pry va deschide o sesiune REPL în consolă, permițându-vă să testați variabile, valori returnate, iterații și multe altele.

Următorul este un exemplu de utilitate a Pry atunci când vine vorba de disecarea structurilor de date imbricate în programele dvs. Am contribuit recent la dezvoltarea unui CLI de căutare de locuri de muncă dev care s-a bazat pe o bază de date cu deschideri de locuri de muncă însămânțate din API-ul Github Jobs. Datele API au fost structurate într-un hash JSON și tabelele bazei noastre de date au fost însămânțate cu valori din aceste hash-uri imbricate. Următoarea imagine arată cum am populat tabelul companii pentru acest proiect:

când popularea unui tabel de baze de date, este vital ca înregistrările merge în tabel sunt create cu datele corecte! Cum putem verifica valorile noastre de iterație pentru a ne asigura că totul funcționează conform așteptărilor? Răspunsul este Pry. Introducerea unei legături.trageți aproape de sfârșitul blocului „populating companies” ne permite să investigăm valorile returnate oprind timpul de rulare și intrând într-o sesiune REPL:

odată ce legarea.pry este introdus în bloc, codul trebuie executat din nou pentru a deschide consola Pry. Când consola Pry se deschide în terminalul nostru, ne aflăm în blocul care populează tabelul bazei de date a companiilor și acum suntem capabili să testăm variabile și să returnăm valori:

acum că am deschis Blocul „populează companii”, este timpul să verificăm câteva valori! Când ‘ job ‘ este introdus în consola pry, un hash pentru o singură deschidere de job este imprimat pe ecran. Hash-ul jobului are mai multe chei, inclusiv tip, url, companie, company_url, locație, titlu etc. Pentru a ne asigura că valorile corecte sunt trimise în baza de date, putem introduce următoarele comenzi în terminalul Pry:

odată ce am stabilit că iterația noastră funcționează așa cum era de așteptat, legarea.trageți poate fi eliminat un tabel nostru va popula la următoarea execuție a programului!

documentație și codul sursă de navigare

să recunoaștem, fiind un dezvoltator înseamnă că va fi bazându-se foarte mult pe Google. De multe ori mă întorc la web pentru a cerceta metodele Ruby și pentru a căuta documentația pentru a mă asigura că structurez corect sintaxa. Ce se întâmplă dacă ți-am spus că Pry oferă un plugin care vă permite să răsfoiți documentația chiar în consola ta? Bine ați venit la pry-doc gem. Pry-doc vă permite să citiți documentația Ruby în sesiunea curentă consola Pry. Acum, pentru un exemplu. Să spunem că nu-mi amintesc cum .găsiți metoda funcționează pe un hash. Pot introduce următoarea comandă în consola, și voil-ul! Consola Pry imprimă documentația pentru această metodă în terminal:

ura! Acum Puteți accesa documentația utilă în terminalul dvs. fără a vă baza pe Google!

comenzi utile

  1. pry-deschide consola Pry din terminal

  2. legare.pry-oprește timpul de rulare și deschide consola Pry

  3. ieșire-iese din bucla curentă

  4. ieșire! – Iese consola trageți

  5. whereami-imprimă locația curentă în cadrul programului

  6. show-doc-afișează documentația pentru o clasă sau o metodă de clasă(e)

  7. istoric-imprimă istoricul comenzilor de prindere la terminal

  8. LS-imprimă variabilele și metodele în domeniul de aplicare actual al programului

  9. ajutor-imprimă lista curentă de comenzi disponibile trageți

trageți îmbunătățit drastic capacitatea mea de a depana programe Ruby și este instrumentul pe care am întotdeauna rândul său, atunci când sunt blocat. Sper că veți găsi aceste sfaturi și trucuri utile și amintiți-vă, ori de câte ori vă aflați în buruieni, puneți o legătură.trageți în ea!



+