调试 Ruby erb 文件有哪些技巧?

bri*_*gge 6 ruby debugging erb rhtml

目前,当我在 erb 模板(用于 HTTPServer/cgi)上遇到错误时,我会执行以下操作:

  • 如果是小的更改,请还原、保存并重新测试。
  • 对于较大的更改或新文件,删除或注释 1/2 的代码,然后重新测试。执行二进制搜索,直到我删除/找到损坏的代码。

调用堆栈似乎与我的 .rhtml 文件中的任何内容都不对应。

(erb):6:in `block in <main>'
/opt/local/lib/ruby/1.9.1/erb.rb:753:in `eval'
/opt/local/lib/ruby/1.9.1/erb.rb:753:in `result'
bin/correct.rb:45:in `block in <main>'
/opt/local/lib/ruby/1.9.1/webrick/httpservlet/prochandler.rb:26:in `call'
Run Code Online (Sandbox Code Playgroud)

小智 7

不确定这是否适用于这个问题,但也许它会帮助某人。我正在使用 rails 5,如果你把

    <% debugger %>
Run Code Online (Sandbox Code Playgroud)

在您的 html.erb 文件中,它将暂停运行 Rails 服务器的终端窗口。从那里您可以调试 html.erb 文件具有的任何参数或变量。


gio*_*ian 5

正如 Daniel 所说,大多数时候错误信息会帮助您快速找到错误所在。

确实有一些情况不是这样。

进行二进制搜索的更笨、更快的方法是插入错误的行,例如

<%= the_error_is_after_this_line %>
Run Code Online (Sandbox Code Playgroud)

然后移动该行,直到找到确切的行。

我不是那些每次可以编写大量行的聪明的程序员之一;我通常通过小步骤进行开发,每次都在浏览器上重新加载页面。

也就是说,避免难以调试视图(或方法,或其他)的更好方法是编写简单、简短的视图。我的经验法则是我必须能够在编辑器窗口中读取整个视图(或方法),除非它只是纯 html。

始终使用助手和局部视图。你能在你的 erb 视图的一行中计算两个以上的 () 或 [] 吗?如果是,请使用助手。

在你的视野中,你能数出两个或三个以上的街区吗?使用一些部分。