2010-03-25 3 views
0

J'ai installé HAML dans mon projet et il fonctionne comme un charme - les modèles sont rendus sans problème. Ma question est comment puis-je faire le rendu sur la ligne de commande, en utilisant le programme HAML. Ce serait super à des fins de débogage, temps pendant que je tente de compiler le fichier HAML je reçois l'erreur sur les premières Rails liés Code Ruby à trouver:Ruby on Rails: Comment vérifier la syntaxe des fichiers haml dans un projet rails?

% cat app/views/dashboard/index.html.haml 
- title "Home" 
%p 
    Lorem ipsum dolor sit amet... 

% haml app/views/dashboard/index.html.haml 
Exception on line 1: undefined method `title' for #<Object:0xb73283b0> 
    Use --trace for backtrace. 

page est rendue bien retourné correctement par le serveur Web.

+0

@ acidburn2k: J'ai édité ma réponse, faites le moi savoir si vous avez besoin de plus d'informations – marcgg

Répondre

3

Je dirais que vous voulez jeter un oeil à la haml engine

template = File.read('templates/really_cool_template.haml') 
haml_engine = Haml::Engine.new(template) 
output = haml_engine.render 
puts output 

modifier: Ensuite, mettez cela dans une tâche de râteau pour charger l'environnement de rails. Une fois qu'il est terminé, vous pouvez passer tous les paramètres à votre modèle

10

Vous pouvez utiliser le drapeau --check sur l'exécutable Haml pour vérifier la syntaxe sans évaluer le code Ruby:

% haml --check app/views/dashboard/index.html.haml 

Pour référence ultérieure, la --help Le drapeau imprimera toutes les options pour l'exécutable.

+2

Cette fonctionnalité est assez inutile pour moi. S'il y a une erreur de syntaxe, alors Rails l'affichera dans le navigateur au cours du développement. Ce dont j'ai besoin est de vérifier la logique du modèle et de voir quelle est la sortie. – mdrozdziel

+0

Je suis désolé ... normalement quand on se réfère à la syntaxe d'un template, on entend la syntaxe de surface, pas la sémantique sous-jacente du code. Pour exécuter le modèle complet, vous devez charger la totalité de la pile Rails et devrez probablement instancier une requête HTTP réelle. Ce n'est pas quelque chose qui convient bien à la ligne de commande. –

+0

hey @nex, bonne réponse, merci. Je me demandais s'il y avait un moyen de corriger automatiquement les erreurs ala 'autopep8 --in-place'? –