在Vim中使用Pry的vim-ruby-debugger样式断点

问题描述 投票:8回答:5

现在,当我想在vim或Sublime Text中使用断点时,我会在代码中删除如下所示的行:

binding.pry if Rails.env.test?

Pry(及其associated plugins)提供了一个很好的环境,可以从命令行进行交互式Ruby调试。

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

我喜欢vim-ruby-debugger在将视觉断点放入编辑器而没有实际修改我的项目的源代码方面所做的事情,但是我在使用我的规范来实现这个功能时遇到了一些麻烦(我真的更喜欢使用它首先撬断'断点')。

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

ruby-on-rails ruby debugging vim pry
5个回答
3
投票

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

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

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

我也完全同意PRY是一个特殊的宝石。


2
投票

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

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

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

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


0
投票

http://www.vim.org/scripts/script.php?script_id=4451似乎解决了你想要的。我没有亲自试过,但我要去:)。


0
投票

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

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

你需要直接在源代码中删除binding.pry,然后进入pry进行测试和游戏。仅供参考,如果你将binding.pry放入你的spec文件,它将在spec文件中打开pry而不是它所指的内容。

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


0
投票

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

  1. 我有vim宏保存“@d”,它在我需要'调试器'的任何行下插入以下代码;调试器; 0这使得它很容易插入。
  2. 为了避免提交调试器行,我设置了一个git hook(pre-commit)来检查提交是否包含这些行(grep)

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

© www.soinside.com 2019 - 2024. All rights reserved.