我一直在寻找可以帮助我追踪语法错误的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 ')'
答案 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部分并检查语法。