Почему «Хэмл -проверка» не находит эту явную синтаксисную ошибку
-
10-10-2019 - |
Вопрос
Я искал задачи граблей, которые помогли бы мне отследить синтаксические ошибки, и я наткнулся на haml --check
В качестве возможного решения для двойной проверки файлов HAML. К сожалению, когда я передал его в этот сломанный пример, Хэмл говорит, что синтаксис в порядке.
Я неправильно понял цель haml --check
Или эта функция не полностью реализована?
Полагаю, я должен упомянуть, что я использую HAML/SASS 3.0.25 (классная 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 ')'
Решение
Может быть, потому, что -c, --check Just check syntax, don't evaluate.
Угадайте: он проверяет только синтаксис HAML и не оценивает inline Ruby.
--редактировать
Это, вероятно, нужно немного Больше тестирования, но я получил работу над простыми файлами HAML :)
haml --debug newsletter.html.haml 2> /dev/null | sed '$d' | ruby -c
Теоретически:
HAML распечатывает предварительный источник Ruby (и сообщения об ошибках в конце), мы стараемся получить только рубиновую часть и проверить синтаксис.