8

现在,当我想要在 vim 或 Sublime Text 中设置断点时,我在代码中添加如下一行:

binding.pry if Rails.env.test?

Pry(及其相关插件)提供了一个很好的环境,可以在其中从命令行进行交互式 Ruby 调试。

但是,将实际代码添加到我的项目以创建每个断点(并记住在提交时删除此类代码)可能很麻烦。

我喜欢vim-ruby-debugger在不实际修改我的项目源代码的情况下将可视断点放入编辑器中所做的事情,但是我在使其在我的规范上下文中起作用时遇到了一些麻烦(我真的更喜欢首先使用 Pry 'breakpoints')。

所以问题是,是否可以将binding.pry 引用放入文件中,以便像 Vim(或 Sublime Text 等)这样的编辑器会在调试时将其拾取并适当响应,而该行实际上不包含在源代码中?

4

5 回答 5

3

您可以使用 a来防止错误提交,例如在代码中Git Hooks留下 a 。binding.pry

本文解释了如何做到这一点https://launchacademy.com/blog/automatically-prevent-bad-git-commits

在这里你是另一个关于它的好帖子http://www.ryanmcg.com/2013/8/12/another-forgotten-binding-pry/

我也完全同意这PRY是一颗非凡的宝石。

于 2014-02-22T20:32:02.387 回答
2

我不知道有任何编辑器或编辑器插件允许您通过设置断点来使用 Pry,而无需实际向binding.pry源代码添加调用。

我认为最接近您要求的解决方案是使用像vim-infer-debugger这样的插件,它提供了根据当前文件类型自动插入调试语句的功能。这个插件的另一个好处是还有一个删除调试器语句的命令,你可以像这样映射:

nmap <Leader>d :call RemoveAllDebuggers()<cr>

正如其他答案中提到的,结合 Git 钩子,这应该可以更容易地确保调试器调用不会留在您的代码中。

于 2019-03-18T18:22:46.030 回答
0

调试时我不使用 pry,如果必须,我只使用常规调试器。但是,这是我的 vim 工作流程。

  1. 我保存了 vim 宏“@d”,它在我所在的任何行下插入以下代码 require 'debugger';debugger;0 这使得插入非常容易。

  2. 为了避免提交调试器行,我设置了一个 git 钩子(预提交)来检查提交是否包含这些行(grep)

http://mark-story.com/posts/view/using-git-commit-hooks-to-prevent-stupid-mistakes

于 2014-02-22T20:24:16.783 回答
0

首先,PRY 是一个了不起的工具,我很高兴你找到了它。

是否可以将 binding.pry 引用放入文件中...而实际上该行不包含在源代码中?

您需要将 binding.pry 直接放在源代码中,以便它进入 pry 以进行测试和玩耍。仅供参考,如果您将 binding.pry 放入您的规范文件中,它将在规范文件中打开 pry 而不是它所指的内容。

您可以尝试使用 binding_of_caller 来尝试 better_erros,并且当您运行失败的 rails 服务器时,a) 它会给您带来更好的错误感觉,并为您提供一个直接撬开错误的盒子。

于 2013-12-28T20:34:34.007 回答
0

http://www.vim.org/scripts/script.php?script_id=4451似乎可以解决您想要的问题。我没有亲自尝试过,但我会:)。

于 2013-06-05T04:09:35.030 回答