3

構文エラーを追跡するのに役立つ rake タスクを探していたところ、haml --checkhaml ファイルをダブルチェックするための可能な解決策として出会いました。残念ながら、この壊れた例を渡すと、haml は構文が OK だと言っています。

この機能の目的を誤解していますか、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 :アスペクト

#aspect_edit_pane
  #facebox_header
    %h4
      = @アスペクト
      。説明
        = t('連絡先', :count =>@aspect_contacts.count) }

最後の文字 (中かっこ) は、構文エラーをトリガーする必要があります。テンプレートがリクエストの一部として実行された場合は、確実に発生します。

ActionView::Template::Error (コンパイル エラー
    /usr/local/app/diaspora/app/views/aspects/edit.html.haml:13:
    構文エラー、予期しない '}'、')' が必要です
4

1 に答える 1

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 部分だけを取得して構文をチェックしようとします。

于 2011-01-12T20:04:34.487 に答える