Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails vim中带有Pry的vim ruby调试器样式断点_Ruby On Rails_Ruby_Debugging_Vim_Pry - Fatal编程技术网

Ruby on rails vim中带有Pry的vim ruby调试器样式断点

Ruby on rails vim中带有Pry的vim ruby调试器样式断点,ruby-on-rails,ruby,debugging,vim,pry,Ruby On Rails,Ruby,Debugging,Vim,Pry,现在,当我想在vim或Sublime文本中设置断点时,我会在代码中插入一行,如下所示: binding.pry if Rails.env.test? (及其)提供了一个很好的环境,可以在其中从命令行执行交互式Ruby调试 但是,将实际代码添加到项目中以创建每个断点(并记住在提交时删除此类代码)可能会很麻烦 我喜欢在不修改项目源代码的情况下将可视断点放到编辑器中,但在我的规范上下文中实现它时遇到了一些困难(我真的更喜欢首先使用Pry“断点”) 所以问题是,是否有可能删除一个绑定。将引用撬入一个文

现在,当我想在vim或Sublime文本中设置断点时,我会在代码中插入一行,如下所示:

binding.pry if Rails.env.test?
(及其)提供了一个很好的环境,可以在其中从命令行执行交互式Ruby调试

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

我喜欢在不修改项目源代码的情况下将可视断点放到编辑器中,但在我的规范上下文中实现它时遇到了一些困难(我真的更喜欢首先使用Pry“断点”)


所以问题是,是否有可能删除一个
绑定。将
引用撬入一个文件,这样像Vim(或Sublime Text等)这样的编辑器将在调试时拾取它并适当地响应,而不在源代码中实际包含行?

似乎可以解决您想要的问题。我还没有亲自尝试过,但我打算:)。

首先,PRY是一个神奇的工具,我很高兴你找到了它

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

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


您可以通过绑定调用方来尝试更好的错误,当您运行出现故障的rails服务器时,a)它会给您更好的错误感觉,并为您提供一个直接的错误查询框

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

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

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


  • 您可以使用
    Git Hooks
    来防止错误的提交,比如在代码中留下
    绑定.pry

    这篇文章解释了如何做到这一点

    这是关于它的另一篇好文章


    另外,我完全同意,
    PRY
    是一个特殊的宝石。

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

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

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

    如其他答案中所述,与Git钩子相结合,可以更轻松地确保调试器调用不会留在代码中。

    您必须编写一个脚本来在pry和vim之间进行对话。使用vim--remote expr,您也可以实现同样的功能。是否希望使用pry调试器样式的断点(带导航和所有功能)?(我猜你会的)或者你真的只是想在那里放一个撬子吗?我知道ruby_pry.vim,但我没有看到证据表明它能做到我上面描述的。