Introduzione a Binding.Pry

Oggi segna la fine della seconda settimana del mio corso immersivo di ingegneria del software presso Flatiron School. Il curriculum è stato fortemente focalizzato sulla comprensione dei fondamenti fondamentali di Ruby, tra cui l’orientamento agli oggetti, i metodi di classe, le istanze di classe, il lavoro con enumeratori, array, hash e relazioni di oggetti.

La maggior parte, se non tutto il linguaggio ruby che ho scritto è nell’ambiente di Test Driven Development (TDD). Sto scrivendo codice per superare i test Rspec che sono stati scritti da qualcun altro o da me stesso. La realtà che mi è venuta in mente mentre mi avvicinavo alla fine della seconda settimana, è che la disponibilità di Rspec e messaggi di errore informativi non può essere assunta. Per questo motivo, ho trovato un divertimento più profondo nello scrivere e superare i miei test con Pry come spalla.

Questa gemma di tutte le gemme (sì, gem install needed, pun also intended) è uno strumento essenziale per il debug, il test e solo avere un buon vecchio snoop nel tuo codice.

Quindi, qual è la leva?

Proprio come IRB (Interactive Ruby), Pry è un tipo di REPL (Read, Evaluate, Print, Loop). È fantastico perché invece di codificare tramite IRB, puoi codificare direttamente nel tuo programma e inserire un ‘associazione.fare leva ‘ in qualsiasi punto del codice per valutare il programma.

Inserimento di ‘ binding.pry ‘ nel tuo codice bloccherà il tuo programma nel punto del suo inserimento. Quando il programma colpisce pry, il programma aprirà un REPL e avremo la possibilità di curiosare nel nostro codice e vedere cosa sta succedendo sotto il cofano.

Per usare, prima Installa Pry gem

Esegui “gem install pry” nella riga di comando.

Usando Pry

Ho creato un esempio di una classe Party contenente metodi di classe e istanza.

Io personalmente uso ” vincolante.pry ” in due casi comuni, ovviamente, ci sono molte altre situazioni che useresti Pry.

Istanza uno: Indiscreti nel valore di un argomento passato in un metodo.

Come, mi chiedo che cosa” occasione ” sulla linea 19 è?

Ho messo un ” legame.pry ” in basso in modo che potessi fare leva su questo particolare metodo. Nota ” rilegatura.pry ” non funziona se lo inserisco nella mia istruzione if / else, quindi la leva è stata posizionata dopo che l’istruzione condition è stata completata.

Il mio esempio con qualche grande azione di puntamento della freccia

Ora, quando chiamo il metodo “musica” nel mio programma ed eseguo il mio file nel terminale, si aprirà la leva REPL. Ora posso testare per vedere quale sia il valore di” occasion “dalla riga 19 digitando” occasion ” nel mio terminale.

Ehi, è un “compleanno”! Dal momento che sappiamo che è un compleanno, possiamo essere certi che una volta eseguito, questo metodo tornerà “Happy Birthday to you, Happy Birthday to you”. Dolce!

Istanza due: Indiscreti nei metodi enumerabili

Nell’esempio seguente, il metodo di classe “all_party_types” raccoglierà tutti i tipi di occasioni party e restituirà una serie di tutte le occasioni che sono mai state create nella classe Party.

Poiché pry è un fantastico strumento di debug, ci consente di esaminare i valori di quasi tutto ciò che vogliamo. Ad esempio, cosa c’è dentro “Party.tutti” (linea 31), o “partito” (linea 31) o “partito.occasione ” (linea 32)? Ci dà i dati che ci aspettiamo?

Se digitiamo ciò in cui vogliamo fare leva, il REPL stamperà esattamente quello che è. Vedere,, sotto. Si noti che “item” e ” item.occasion “ci mostra solo un’istanza di “Party”, ma se premiamo” exit ” nella riga di comando e rieseguiamo quei comandi, il REPL stamperà l’istanza successiva nel ciclo e ci mostrerà il valore successivo nell’array.

Pry Tips

Perché il lavoro di squadra rende il dreamwork, ecco i miei primi quattro consigli su come utilizzare Pry.

  1. Require quindi Chiamare il metodo prima di provare a fare leva

È necessario ” require ‘pry’ “nella parte superiore del file e quindi chiamare il metodo prima di “binding.pry ” funzionerà.

2. Curiosando in un ciclo (“exit”)

Puoi usare” exit ” per fare leva sul valore restituito del ciclo successivo.

Ad esempio, se “Party.all “contiene una matrice di 3 istanze di “party”, digitando” exit ” nella riga di comando si sposterà sulla prossima istanza del ciclo. Per ogni istanza del ciclo, è possibile accedere al valore “party”. Magia!

3. Forza l’uscita fuori dal ciclo (“!!!”/”esci!”)

Quando hai finito con tutto ciò che curiosare in giro, si può colpire”!!!”o” esci!”per uscire completamente dalla leva. “esci “senza”!”è anche un’opzione se non stai facendo leva su un metodo con un ciclo.

4. Reimpostazione di pry (“reload-code”)

Qual è il punto di debug se non è possibile modificare il codice e testare in movimento?

Una volta terminato l’aggiornamento del codice, è possibile digitare “reload-code” nella riga di comando. Questo ripristinerà la sessione di pry con il nuovo programma senza dover uscire manualmente da pry e quindi reinserire pry dopo aver apportato modifiche al programma.

Quindi, questo è tutto da me. Buon debug!

You might also like

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.