Ruby 如何在gem的示例脚本中使用pry byebug?

Ruby 如何在gem的示例脚本中使用pry byebug?,ruby,debugging,gem,rubygems,pry,Ruby,Debugging,Gem,Rubygems,Pry,我正在制作我的第一个gem,它不是Rails应用程序,是一个tic-tac-toe库,里面有一些人工智能,所以我可以玩一个永远不会输的电脑对手,并在可能的情况下强迫获胜 现在我正试图调试AI中的攻击策略,但我似乎不知道如何让pry byebug在我的测试脚本中工作,特别是,让调试命令,如step,next,等,在点击绑定后工作。pry 名为smart tac toe的gem具有以下目录结构: $ ls smart-tac-toe example Gemfile Gemfile.lock G

我正在制作我的第一个gem,它不是Rails应用程序,是一个tic-tac-toe库,里面有一些人工智能,所以我可以玩一个永远不会输的电脑对手,并在可能的情况下强迫获胜

现在我正试图调试AI中的攻击策略,但我似乎不知道如何让pry byebug在我的测试脚本中工作,特别是,让调试命令,如
step
next
,等,在点击
绑定后工作。pry

名为smart tac toe的gem具有以下目录结构:

$ ls smart-tac-toe
example  Gemfile  Gemfile.lock  Guardfile  lib  LICENSE.txt  Rakefile  README.md  smart_tac_toe.gemspec  spec  tmp
正如您在上面所看到的,在我的gem中有一个“example”目录,其中包含“example.rb”,在这里我使用我创建的类

但是,当我使用
binding.pry
并尝试使用
step
next
时,pry会话将退出,脚本将继续运行

在我的smart_tac_toe.gempec文件中,我显然有pry byebug:

spec.add_development_dependency "pry-byebug", '~>2.0.0'
user@machine/currentdirectory/$ gem install pry-byebug
在example.rb文件的顶部,我尝试要求使用适当的gems:

require 'pry'
require 'pry-byebug'
require "../lib/smart_tac_toe.rb"
我使用的是Ruby 2.1.1p76,该宝石的回购协议位于


另外,虽然将binding.pry放入示例脚本中会让我进入调试会话,但最初它处于读取模式,我必须按q退出该模式,然后才能开始执行repl操作。想知道为什么会这样吗?

我觉得你做得太过分了。这对我很有用:

require 'pry-byebug'

puts 'foo'
binding.pry
puts 'bar'

好的,进一步研究这个问题,我意识到(我想…对游戏来说还是一种新的)一些事情--

1.)如果你想

require 'pry'
在ruby文件的顶部,让它正常工作,使用终端在开发环境中安装它会有所帮助:

user@machine/currentdirectory/$ gem install pry 
同样,使用pry byebug:

spec.add_development_dependency "pry-byebug", '~>2.0.0'
user@machine/currentdirectory/$ gem install pry-byebug
2.)我最初问题的真正答案是使用

byebug
在我的脚本中作为调试挂钩,而不是

binding.pry
(感谢@mtm的建议!)


但是,当我确实使用byebug时,
step
next
工作正常,它使我进入的REPL没有任何颜色,总的来说,解决这个问题不是很好吗?

如果你用
byebug
而不是
binding,会发生什么事呢?pry
byebug
而不是
binding。pry
帮我做这件事!谢谢:-)