dziś kończy się drugi tydzień mojego kursu inżynierii oprogramowania w szkole Flatiron. Program nauczania był mocno skoncentrowany na zrozumieniu podstawowych podstaw Rubiego, w tym orientacji obiektowej, metod klasowych, instancji klas, pracy z enumeratorami, tablicami, hashami i relacjami obiektów.
większość, jeśli nie cały język ruby, który pisałem, znajduje się w środowisku Test Driven Development (TDD). Piszę kod, aby przejść testy Rspec, które zostały napisane przez kogoś innego lub mnie. Rzeczywistość, która rzuciła mi się w oczy, gdy zbliżałem się do końca drugiego tygodnia, polega na tym, że nie można zakładać dostępności Rspec i informacyjnych komunikatów o błędach. Z tego powodu znalazłem głębszą przyjemność w pisaniu i zdaniu własnych testów z Pry jako moim pomocnikiem.
ten klejnot wszystkich klejnotów (tak, gem install needed, kalambur również zamierzony) jest niezbędnym narzędziem do debugowania, testowania i po prostu starego dobrego Snoopa w kodzie.
Co to jest Pry?
podobnie jak IRB (Interactive Ruby), Pry jest rodzajem REPL (Read, Evaluate, Print, Loop). To niesamowite, ponieważ zamiast kodowania przez IRB, można kodować bezpośrednio w programie i umieścić w ’ wiązania.pry ’ gdziekolwiek w kodzie do oceny programu.
Inserting ” binding.pry ’ do kodu spowoduje zamrożenie programu w momencie jego wstawiania. Kiedy program naciśnie pry, program otworzy REPL i mamy szansę wbić się w nasz kod i zobaczyć, co dzieje się pod maską.
aby użyć, najpierw zainstaluj Pry gem
Uruchom „Gem install PRY” w wierszu poleceń.
używając Pry
stworzyłem przykład klasy Party zawierającej metody class i instance.
osobiście używam ” binding.pry ” w dwóch typowych przypadkach, oczywiście, istnieje wiele innych sytuacji, które można użyć Pry.
instancja pierwsza: wtargnięcie do wartości argumentu przekazanego do metody.
ciekawe co to jest „okazja” na linii 19?
umieściłem ” binding.pry ” na dole, abym mógł wścibski w tę konkretną metodę. Uwaga ” oprawa.pry ” nie działa, jeśli włożę go do instrukcji if/else, więc pry został umieszczony po zakończeniu instrukcji condition.
teraz, kiedy wywołam metodę „muzyka” w moim programie i uruchomię mój plik w terminalu, PRY REPL otworzy się. Mogę teraz przetestować, aby zobaczyć, jaka jest wartość „okazja” z linii 19, wpisując „okazja” w moim terminalu.
Hej, to są „urodziny”! Ponieważ wiemy, że są to urodziny, możemy być pewni, że po uruchomieniu ta metoda powróci „sto lat dla Ciebie, sto lat dla Ciebie”. Super!
instancja druga: wtykanie w metody wyliczalne
W poniższym przykładzie metoda klasy „all_party_types” zbierze wszystkie typy okazji imprezowych i zwróci tablicę wszystkich okazji, które kiedykolwiek zostały utworzone w klasie strony.
ponieważ pry jest niesamowitym narzędziem do debugowania, pozwala nam przyjrzeć się wartościom prawie wszystkiego, co chcemy. Na przykład, co jest w środku „Party.all „(linia 31), lub ” party „(linia 31) lub ” party.okazja ” (linia 32)? Czy daje nam dane, których oczekujemy?
jeśli wpiszemy to, do czego chcemy się wtrącić, REPL wyświetli dokładnie to, co to jest. Zobacz,, poniżej. Zauważ, że „item” i „item”.occasion „pokazuje nam tylko jedną instancję „Party”, ale jeśli naciśniemy” exit ” w wierszu poleceń i ponownie uruchomimy te polecenia, REPL wydrukuje następną instancję w pętli i pokaże nam następną wartość w tablicy.
Pry Tips
ponieważ praca zespołowa sprawia, że praca marzeń, oto moje cztery najlepsze wskazówki dotyczące korzystania z Pry.
- Require następnie wywołaj metodę przed próbą podważenia
musisz ” require 'pry’ „na górze pliku, a następnie najpierw wywołać metodę przed „wiązaniem.pry ” zadziała.
2. Wtykanie w pętlę („exit”)
możesz użyć „exit”, aby wtykać w wartość zwróconą następnej pętli.
na przykład, jeśli ” Party.all „zawiera tablicę 3 instancji „party”, wpisanie” exit ” w wierszu poleceń spowoduje przejście do następnej instancji pętli. Dla każdej instancji pętli możesz uzyskać dostęp do wartości „party”. Magia!
3. Wymuś wyjście z pętli („!!!”/”exit!”)
kiedy skończysz z tym całym węszeniem, możesz uderzyć”!!!”lub” exit!”aby wyjść z pry całkowicie. „wyjście „bez”!”jest również opcją, jeśli nie wtrącasz się w metodę z pętlą.
4. Resetowanie pry („reload-code”)
jaki jest sens debugowania, jeśli nie możesz zmienić kodu i testować w podróży?
po zakończeniu aktualizacji kodu możesz wpisać „reload-code” w wierszu poleceń. Spowoduje to zresetowanie sesji pry z nowym programem bez konieczności ręcznego wychodzenia z pry, a następnie ponownego wprowadzania pry po wprowadzeniu zmian w programie.
więc to wszystko ode mnie. Szczęśliwego debugowania!