Ruby 如何在gem的示例脚本中使用pry byebug?
我正在制作我的第一个gem,它不是Rails应用程序,是一个tic-tac-toe库,里面有一些人工智能,所以我可以玩一个永远不会输的电脑对手,并在可能的情况下强迫获胜 现在我正试图调试AI中的攻击策略,但我似乎不知道如何让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
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
帮我做这件事!谢谢:-)