【问题标题】:vim-ruby-debugger style breakpoints with Pry in Vim在 Vim 中使用 Pry 的 vim-ruby-debugger 样式断点
【发布时间】:2013-05-24 19:42:30
【问题描述】:

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

binding.pry if Rails.env.test?

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

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

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

所以问题是,是否可以将binding.pry reference 放到一个文件中,这样 Vim(或 Sublime Text 等)这样的编辑器会在没有debug-time的行居然被包含在源代码中?

【问题讨论】:

  • 您必须编写一个脚本才能在 pry 和 vim 之间进行对话。使用 vim --remote-expr 你可以达到同样的效果。
  • 你想要 pry-debugger 风格的断点 - 带有导航和所有功能吗? (我猜你会这样做)还是你真的只是想在里面撬一下?

标签: ruby-on-rails ruby debugging vim pry


【解决方案1】:

您可以使用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 钩子,如其他答案中所述,这应该可以更轻松地确保调试器调用不会留在您的代码中。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我知道 ruby​​_pry.vim,但我没有看到证据表明它可以做我上面描述的事情。
      【解决方案4】:

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

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

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

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

      【讨论】:

        【解决方案5】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-27
          • 2011-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多