【问题标题】:How to use pry-byebug in an example script for a gem?如何在 gem 的示例脚本中使用 pry-byebug?
【发布时间】: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 并尝试使用stepnext 时,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


【解决方案1】:

好吧,仔细研究一下,我意识到(我认为……对游戏来说还是有点新)一些事情——

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 没有任何颜色,而且总体上也没有那么好......无论如何要解决这个问题?

【讨论】:

  • byebug 代替 binding.pry 为我做!谢谢:-)
【解决方案2】:

我认为你做得过火了。这对我有用:

require 'pry-byebug'

puts 'foo'
binding.pry
puts 'bar'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多