Debugging with Pry: a Beginner's Guide

While working through the pre-bootcamp coursework provided by Flatiron School, I constantly found myself strugling to check and debug return values within iterations and nested data structures. O Learn.co o currículo introduziu uma ferramenta chamada Pry, mas eu tive dificuldade em entender como implementá-la em meu código. Só num laboratório difícil chamado Hashketball é que as coisas finalmente se encaixaram. Depois de lutar pelo laboratório por muito tempo, eu finalmente me forcei a ler a documentação de Pry e minha capacidade de escrever e depurar iterações de hash imediatamente melhorou. Se alguma vez se encontrar a lutar para construir um programa de Ruby, O Pry pode provar ser uma ferramenta inestimável no seu arsenal. Pry é uma ferramenta poderosa que os desenvolvedores Ruby podem usar para depurar programas e empurrar barreiras passadas. Como outras gemas de Ruby, a gema Pry deve ser necessária em suas configurações de ambiente ou arquivo ruby específico, a fim de Acessar a sua funcionalidade. Além disso, existem vários plugins Pry, incluindo pry-doc e pry-byebug, que expandem as características e capacidades da gem. Você pode pensar nestes plugins como pedras separadas que devem ser necessárias em seu gemfile.

uma vez que você tenha configurado seu programa com a jóia Pry, é hora de abrir seu código e experimentar a alegria que está debugando com Pry. O Pry está cheio de recursos, mas os seguintes exemplos destacam o que eu acredito ser o mais útil.

REPL (Read, Evaluate, Print, Loop)

Pry pode substituir a linha de comandos integrada do IRB de Ruby e baseia-se na funcionalidade de REPL do IRB com algumas funcionalidades adicionais. Tanto o IRB quanto o Pry permitem que você execute comandos Ruby no terminal e receba resultados imediatos no terminal. Ter a funcionalidade REPL no seu terminal é uma ferramenta muito útil que lhe permite testar rapidamente o código Ruby sem executar todo o seu programa. Digamos, por exemplo, que você quer iterar sobre uma matriz e ver quais valores são retornados. Você pode simplesmente entrar na matriz, use um iterador sobre essa matriz, e verificar os seus resultados:

Observe que enquanto ambos IRB e Retire devolvidos os mesmos valores para esta iteração simples, a maneira de Erguer impressões para o terminal parece um pouco diferente. Uma das vantagens de Pry sobre o padrão IRB é o seu uso de realce de sintaxe. Outras características que dão Pry a vantagem sobre IRB incluem:

  1. Guia de conclusão

  2. ferramentas de Depuração

  3. Capacidade de exibir a documentação

tempo de execução invocação

Talvez o mais útil recurso de Erguer é a sua capacidade de parar um tempo de execução do programa em suas faixas. O programador Ruby pode invocar a consola pry durante o período de execução inserindo a ligação da linha.onde quer que queiram parar o programa. Quando o intérprete atingir a ligação.pry, Pry abrirá uma sessão de REPL na consola, permitindo testar variáveis, valores de retorno, iterações e muito mais.

a seguir é um exemplo da utilidade de Pry quando se trata de dissecar estruturas de dados aninhadas em seus programas. Eu contribuí recentemente para o desenvolvimento de um CLI de pesquisa de emprego dev que dependia de um banco de dados de aberturas de emprego semeado a partir da API de empregos GitHub. Os dados da API foram estruturados em um hash JSON e nossas tabelas de banco de dados foram semeadas com valores desses hashs aninhados. A imagem a seguir mostra como nós povoamos a tabela de empresas para este projeto:

ao popularizar uma tabela de banco de dados, é vital que os registros que vão para a tabela são criados com os dados corretos! Como podemos verificar os nossos valores de iteração para garantir que tudo está funcionando como esperado? A resposta é curiosa. A inserir uma ligação.pry perto do final do bloco “populating companies” permite-nos investigar os valores de retorno, parando o tempo de execução e entrando em uma sessão REPL:

uma vez a ligação.pry é inserido no bloco, o código deve ser executado novamente, a fim de abrir a consola Pry. Quando o Levante console abre em nosso terminal, estamos dentro do bloco, que é preencher as empresas tabela de banco de dados e agora somos capazes de teste de variáveis e valores de retorno:

Agora que temos erguida abrir a “preencher as empresas” do bloco, é hora de verificar alguns valores! Quando ‘job’ é inserido na consola pry, um hash para uma única abertura de trabalho é impresso na tela. O hash do trabalho tem várias chaves, incluindo Tipo, url, empresa, company_url, localização, título, etc. Para ter certeza de que os valores corretos estão sendo enviados para o banco de dados, podemos inserir os seguintes comandos no Terminal Pry:

assim que determinarmos que a nossa iteração está a funcionar como esperado, a ligação.pry pode ser removido uma nossa tabela irá povoar na próxima execução do programa!

documentação e navegação por código fonte

sejamos realistas, ser um desenvolvedor significa que você vai depender muito do Google. Muitas vezes me dirijo à web para pesquisar métodos Ruby e documentação scour para garantir que estou estruturando corretamente a sintaxe. E se eu lhe dissesse que o Pry oferece um plugin que lhe permite navegar pela documentação em seu console? Bem-vindo ao Pry-doc gem. O Pry-doc permite-lhe ler a documentação do Ruby na sua sessão actual da consola Pry. Agora, por exemplo. Digamos que não me lembro como … o método de procura funciona com um haxixe. Eu posso inserir o seguinte comando no console, e voilà! A consola Pry imprime a documentação para esse método no terminal:

Viva! Agora você pode acessar documentação útil em seu terminal sem contar com o Google!

comandos bisbilhoteiros úteis

  1. pry-abre a consola Pry no seu terminal

  2. vinculativo.pry-pára a execução e abre a consola Pry

  3. saída-sai do ciclo actual

  4. saída! -Sai Erguer console

  5. whereami -Imprime localização actual no programa

  6. mostrar-doc -Exibe a documentação para uma classe ou método(s)

  7. história -Imprime a história do Levante dos comandos para o terminal

  8. ls -Imprime as variáveis e métodos no escopo atual do programa

  9. ajuda -Imprime a lista atual de disponível Erguer comandos

Retire drasticamente melhorou a minha capacidade de depurar programas em Ruby e é a ferramenta que eu sempre voltar para quando eu estou preso. Espero que achem estas dicas e truques úteis, e lembrem-se, sempre que estiverem no mato, coloquem uma ligação.mete-te nela!



+