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

时间:2014-12-09 19:31:40

标签: ruby debugging gem rubygems pry

我正在制作我的第一个宝石,这不是一个Rails应用程序,是一个带有一些AI的井字游戏库,所以我可以扮演一个永远不会失去的强大计算机对手如果可能的话赢。

现在我正在尝试在AI中调试攻击策略,但我似乎无法弄清楚如何让pry-byebug在我的测试脚本中工作,特别是有{{1}这样的调试命令}},step等在点击next时工作。

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

binding.pry

如您所见,有一个例子'我的gem中的目录包含" example.rb",其中我使用了我已经制作的类。

但是,当我使用$ ls smart-tac-toe example Gemfile Gemfile.lock Guardfile lib LICENSE.txt Rakefile README.md smart_tac_toe.gemspec spec tmp 并尝试使用binding.prystep时,Pry会话就会退出并且脚本会继续运行。

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

next

在我的example.rb文件的顶部,我尝试过要求正确的宝石:

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

我使用的是Ruby 2.1.1p76,这个gem的repo位于https://github.com/discotroll65/smart_tac_toe

另外,虽然将binding.pry放入我的示例脚本会让我进入调试会话,但最初它处于读取模式,我必须先按 q 才能退出做repl的东西。有没有想过为什么会这样?

2 个答案:

答案 0 :(得分:3)

好的,我更多地意识到这一点(我认为......对游戏来说仍然是一种新的东西)有几件事 -

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时,虽然stepnext正常工作,但它引发我的REPL并没有任何颜色,并且一般都不好......无论如何要解决这个问题?

答案 1 :(得分:2)

我认为你过度了。这对我有用:

require 'pry-byebug'

puts 'foo'
binding.pry
puts 'bar'