为什么'haml --check'找不到这个明显的语法错误

时间:2011-01-12 19:56:20

标签: ruby-on-rails ruby haml syntax-checking

我一直在寻找可以帮助我追踪语法错误的rake任务,并且我遇到了haml --check作为双重检查haml文件的可能解决方案。不幸的是,当我通过这个破坏的例子时,haml说语法没问题。

我是否误解了haml --check的目的,或者此功能未完全实施?

我想我应该提到我使用的是Haml / Sass 3.0.25(Classy Cassidy),rails 3.0.3,ruby 1.9.2p0和Mac 10.6.6。

$ haml --check /tmp/edit.html.haml
Syntax OK

#/tmp/edit.html.haml
- content_for :head do
  = include_javascripts :aspects

#aspect_edit_pane
  #facebox_header
    %h4
      = @aspect
      .description
        = t('contacts', :count =>@aspect_contacts.count)}

最后一个字符(花括号)应该触发语法错误,当模板作为请求的一部分执行时,它肯定会这样做:

ActionView::Template::Error (compile error 
    /usr/local/app/diaspora/app/views/aspects/edit.html.haml:13: 
    syntax error, unexpected '}', expecting ')'

1 个答案:

答案 0 :(得分:4)

也许是因为-c, --check Just check syntax, don't evaluate.

猜猜:它只检查haml语法,不评估内联ruby。

- 修改

这可能需要一些更多测试,但我让它处理简单的haml文件:)

haml --debug newsletter.html.haml 2> /dev/null | sed '$d' | ruby -c

理论上:

Haml打印出预编译的Ruby源代码(以及最后的错误消息),我们尝试只获取ruby部分并检查语法。