Как использовать pry-byebug в примере скрипта для драгоценного камня?

Я работаю над созданием своего первого драгоценного камня, который не является приложением Rails, а является библиотекой для игры в крестики-нолики с некоторым количеством ИИ, поэтому я могу играть с компьютерным противником, который никогда не проиграет и форсирует победу, если это возможно.

Прямо сейчас я пытаюсь отладить стратегию атаки в ИИ, но я не могу понять, как заставить pry-byebug работать в моем тестовом сценарии, в частности, чтобы команды отладки, такие как step, next и т. д., работали над попадание в binding.pry.

Драгоценный камень с именем smart-tac-toe имеет следующую структуру каталогов:

$ ls smart-tac-toe
example  Gemfile  Gemfile.lock  Guardfile  lib  LICENSE.txt  Rakefile  README.md  smart_tac_toe.gemspec  spec  tmp

Как вы можете видеть выше, в моем геме есть каталог «example», который содержит «example.rb», где я использую созданные мной классы.

Однако, когда я использую binding.pry и пытаюсь использовать step и next, сеанс Pry просто завершается, а скрипт продолжает работать.

В моем файле smart_tac_toe.gemspec явно присутствует pry-byebug:

spec.add_development_dependency "pry-byebug", '~>2.0.0'

и в верхней части моего файла example.rb я попытался потребовать правильные драгоценные камни:

require 'pry'
require 'pry-byebug'
require "../lib/smart_tac_toe.rb"

Я использую Ruby 2.1.1p76, репозиторий этого драгоценного камня находится по адресу https://github.com/discotroll65/smart_tac_toe

Кроме того, несмотря на то, что добавление binding.pry в мой пример сценария приводит к сеансу отладки, изначально он находится в режиме чтения, и мне нужно нажать q, чтобы выйти из него, прежде чем я смогу начать делать repl-вещи. . Любые мысли о том, почему это может быть?


person Garrett Simpson    schedule 09.12.2014    source источник
comment
Что произойдет, если вы используете byebug вместо binding.pry?   -  person Matt    schedule 09.12.2014


Ответы (2)


Хорошо, изучив это, я понял (я думаю ... все еще новичок в игре) пару вещей -

1.) Если вы хотите, если есть

require 'pry'

в верхней части вашего файла ruby ​​и заставить его работать в целом, это поможет установить его в вашей среде разработки с помощью вашего терминала:

user@machine/currentdirectory/$ gem install pry 

аналогично с pry-byebug:

user@machine/currentdirectory/$ gem install pry-byebug

2.) Настоящий ответ на мой первоначальный вопрос — использовать

byebug

в моем сценарии в качестве ловушки отладки вместо

binding.pry

(спасибо @mtm за предложение!)

когда я использую byebug, хотя step и next работают правильно, REPL, в который он меня бросает, не имеет никакого цвета и в целом не так хорош... как бы это исправить?

person Garrett Simpson    schedule 19.12.2014
comment
byebug вместо binding.pry делает это за меня! Спасибо :-) - person Abdo; 01.02.2015

Я думаю, ты преувеличиваешь. Это работает для меня:

require 'pry-byebug'

puts 'foo'
binding.pry
puts 'bar'
person the Tin Man    schedule 09.12.2014