Debug con Pry: A Beginner ' s Guide

Mentre lavoravo attraverso i corsi pre-bootcamp forniti da Flatiron School, mi trovavo costantemente a fatica a controllare e eseguire il debug dei valori di ritorno all’interno di iterazioni e strutture di dati nidificate. Il Learn.co curriculum ha introdotto uno strumento chiamato Pry, ma ho avuto difficoltà a capire come implementarlo nel mio codice. Non è stato fino a quando un laboratorio difficile con il nome di Hashketball che le cose finalmente cliccato. Dopo aver lottato attraverso il laboratorio per troppo tempo, alla fine mi sono costretto a leggere la documentazione di Pry e la mia capacità di scrivere ed eseguire il debug delle iterazioni di hash è immediatamente migliorata.

Se ti ritrovi a lottare per costruire un programma Ruby, Pry potrebbe rivelarsi uno strumento inestimabile nel tuo arsenale. Pry è un potente strumento che gli sviluppatori di Ruby possono utilizzare per eseguire il debug di programmi e superare gli ostacoli. Come altre gemme Ruby, la gemma Pry deve essere richiesta nelle impostazioni dell’ambiente o nel file Ruby specifico per accedere alla sua funzionalità. Inoltre, ci sono diversi plugin Pry, tra cui pry-doc e pry-byebug, che espandono le caratteristiche e le capacità della gemma. Puoi pensare a questi plugin come gemme separate che devono essere richieste nel tuo gemfile.

Una volta configurato il programma con la gemma Pry, è il momento di aprire il codice e sperimentare la gioia che sta eseguendo il debug con Pry. Pry è pieno di funzionalità, ma i seguenti esempi evidenziano ciò che ritengo essere il più utile.

REPL (Read, Evaluate, Print, Loop)

Pry può sostituire la shell IRB integrata di Ruby e si basa sulla funzionalità REPL di IRB con alcune funzionalità aggiuntive. Sia IRB che Pry consentono di eseguire comandi Ruby nel terminale e ricevere risultati immediati nel terminale. Avere la funzionalità REPL nel tuo terminale è uno strumento molto utile che ti permette di testare rapidamente il codice Ruby senza eseguire l’intero programma. Diciamo, ad esempio, che vuoi iterare su un array e vedere quali valori vengono restituiti. Puoi semplicemente inserire l’array, utilizzare un iteratore su quell’array e controllare i risultati:

Si noti che mentre sia IRB che Pry hanno restituito gli stessi valori per questa semplice iterazione, il modo in cui Pry stampa sul terminale sembra un po ‘ diverso. Uno dei vantaggi di Pry rispetto allo standard IRB è il suo uso dell’evidenziazione della sintassi. Altre caratteristiche che danno Leva il bordo sopra IRB includono:

  1. il completamento della Scheda

  2. strumenti di Debug

  3. Possibilità di visualizzare la documentazione

Runtime invocazione

Forse la funzione più utile di Leva è la sua capacità di interrompere un programma di runtime nelle sue tracce. Il programmatore Ruby può richiamare la console pry durante il runtime inserendo il binding della linea.fai leva ovunque vogliano fermare il programma. Quando l’interprete colpisce la rilegatura.pry, Pry aprirà una sessione REPL nella console, consentendo di testare variabili, valori di ritorno, iterazioni e altro ancora.

Di seguito è riportato un esempio dell’utilità di Pry quando si tratta di sezionare strutture di dati annidate nei programmi. Recentemente ho contribuito allo sviluppo di una CLI di ricerca di lavoro dev che si basava su un database di aperture di lavoro seminate dall’API Job GitHub. I dati API sono stati strutturati in un hash JSON e le nostre tabelle di database sono state seminate con valori da questi hash nidificati. L’immagine seguente mostra come abbiamo popolato la tabella delle aziende per questo progetto:

Quando si compila una tabella di database, è fondamentale che i record che entrano nella tabella vengano creati con i dati corretti! Come potremmo controllare i nostri valori di iterazione per garantire che tutto funzioni come previsto? La risposta è Pry. Inserimento di una rilegatura.fare leva verso la fine del blocco “popolamento delle aziende” ci consente di indagare i valori restituiti interrompendo il runtime e inserendo una sessione REPL:

Una volta che il legame.pry viene inserito nel blocco, il codice deve essere eseguito di nuovo per aprire la console Pry. Quando la console Pry si apre nel nostro terminale, siamo all’interno del blocco che sta popolando la tabella del database delle aziende e ora siamo in grado di testare le variabili e restituire i valori:

Ora che abbiamo aperto il blocco “popola aziende”, è il momento di controllare alcuni valori! Quando’ lavoro ‘ viene inserito nella console di leva, un hash per una singola apertura di lavoro viene stampato sullo schermo. L’hash del lavoro ha diverse chiavi tra cui tipo, url, azienda, company_url, posizione, titolo, ecc. Per assicurarsi che i valori corretti vengano inviati al database, possiamo inserire i seguenti comandi nel Pry terminal:

Una volta stabilito che la nostra iterazione funziona come previsto, il binding.pry può essere rimosso un nostro tavolo popolerà al momento della prossima esecuzione del programma!

Documentazione e codice sorgente browsing

Ammettiamolo, essendo uno sviluppatore significa che si baserà pesantemente su Google. Mi rivolgo spesso al web per ricercare metodi Ruby e setacciare la documentazione per assicurarmi di strutturare correttamente la sintassi. E se ti dicessi che Pry offre un plugin che ti consente di sfogliare la documentazione direttamente nella tua console? Benvenuti alla gemma di pry-doc. Pry-doc consente di leggere la documentazione di Ruby all’interno della sessione corrente di Pry console. Ora per un esempio. Diciamo che non riesco a ricordare come il .trova metodo funziona su un hash. Posso inserire il seguente comando nella console, e voilà! La console Pry stampa la documentazione per quel metodo nel terminale:

Urrà! Ora puoi accedere alla documentazione utile nel tuo terminale senza fare affidamento su Google!

Comandi di leva utili

  1. pry-Apre la console Pry nel terminale

  2. rilegatura.pry-Interrompe il runtime e apre la console Pry

  3. exit-Esce dal ciclo di corrente

  4. esci! -Uscite Leva console

  5. whereami -Stampe posizione corrente all’interno del programma

  6. show-doc -Visualizza la documentazione per una classe o un metodo di classe(s)

  7. storia -Stampe storia di Leva comandi per il terminale

  8. ls -Stampa le variabili e metodi nell’attuale ambito del programma

  9. aiuto -Stampe l’attuale lista di Leva dei comandi

Sollevare drasticamente migliorato la mia capacità di eseguire il debug di programmi Ruby ed è lo strumento che ho sempre quando mi sono bloccato. Spero che trovi utili questi suggerimenti e trucchi e ricorda, ogni volta che sei tra le erbacce, metti una rilegatura.fai leva!



+