【发布时间】:2014-12-09 19:31:39
【问题描述】:
我正在制作我的第一个 gem,它不是一个 Rails 应用程序,它是一个包含一些 AI 的井字游戏库,所以我可以玩一个永远不会输的计算机对手,并在以下情况下强行获胜可能。
现在我正在尝试调试 AI 中的攻击策略,但我似乎无法弄清楚如何让 pry-byebug 在我的测试脚本中工作,具体来说,有像 step、@ 这样的调试命令987654323@等在点击binding.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.gemspec 文件中,我显然有 pry-byebug:
spec.add_development_dependency "pry-byebug", '~>2.0.0'
在我的 example.rb 文件的顶部,我尝试过要求正确的 gem:
require 'pry'
require 'pry-byebug'
require "../lib/smart_tac_toe.rb"
我使用的是 Ruby 2.1.1p76,这个 gem 的 repo 位于 https://github.com/discotroll65/smart_tac_toe
另外,虽然将 binding.pry 放入我的示例脚本确实会让我进入调试会话,但最初它处于阅读模式,我必须按 q 退出,然后才能开始做repl的东西。关于为什么会这样的任何想法?
【问题讨论】:
-
如果你使用
byebug而不是binding.pry会发生什么?
标签: ruby debugging gem rubygems pry