2010-06-20 13 views
19

Ok, donc j'adore HAML. En particulier, j'aime l'intégration avec RedCloth et BlueCloth, donc je peux utiliser Markdown et Textile mélangés avec mon HAML. J'adore aussi Python et Django. Donc, je voudrais utiliser HAML avec Django. Maintenant, je comprends déjà qu'il y a quelques tentatives de cloner la syntaxe de type HAML en Python (SHPAML et autres). J'ai essayé ces derniers, et bien qu'ils ne soient pas mauvais, j'ai trouvé que je voulais juste le vrai HAML. Partiellement pour sa syntaxe, mais aussi pour des choses comme RedCloth et BlueCloth. Donc, ma question est: comment faire fonctionner HAML et Django ensemble?Ruby HAML avec Django?

Une solution, je pense, serait de créer des modèles HAML, puis de les compiler en HTML en utilisant l'outil de ligne de commande chaque fois qu'ils sont mis à jour.

Quesiton 1: Vais-je rencontrer des problèmes ici? Je me demande aussi s'il y a un moyen de faire en sorte que Python et Ruby jouent ensemble un peu plus. Une idée que j'avais était en train de forcer les processus de Ruby. C'est probablement une mauvaise idée, mais quelqu'un a des idées à ce sujet?

Question 2: Qu'en est-il de l'utilisation de Python pour appeler le vrai Ruby HAML?

Enfin, si quelqu'un sait d'une implémentation Python de HAML qui est complète et qui supporte des textiles ou Markdown, ainsi que passthru texte brut, alors laissez-moi savoir. Question 3: Existe-t-il une traduction complète de HAML en Python, y compris la prise en charge de Markdown ou Textile?

Merci!

Répondre

8

Question 1: les fichiers HTML statiques doivent fonctionner correctement (sauf si vous envisagez d'utiliser la fonction d'évaluation ruby ​​de HAML pour un contenu dynamique). J'utilise un moyen similaire sur un site web php avec des feuilles de style SASS. Assurez-vous que vous commencez HAML dans le répertoire en mode veille avant de commencer à pirater;)

Question 2: alors que bifurquer un processus rubis pour créer un code HTML est possible, mais je ne le recommande pas vous, parce que l'initialisation d'un rubis interprète, et le chargement des fichiers requis prend beaucoup de temps de processeur, de sorte que vous feriez mieux de s'en tenir à des fichiers statiques. Si vous avez besoin de la fonction d'évaluation de ruby ​​pour inclure des données créées dans le document, vous devriez jeter un oeil à eventmachine et en faire un serveur (ainsi votre application Django peut s'y connecter, et demander la génération HTML sans forcer un nouveau interprète à chaque fois).

Question 3: c'est peut-être le plus dur. Il y a GHRML qui est abandonné; SHPAML qui implémente seulement un petit sous-ensemble de HAML, DMSL qui est actuellement très expérimental, mais qui supporte déjà la plupart des HAML et qui appelle aussi le code python, mais qui manque de support Markdown ou Textile. Mais apparemment, il n'y a pas (encore) d'alternative à Ruby HAML qui supporte toutes les fonctionnalités requises.

+0

http://stackoverflow.com/questions/519671/-there-a-haml-implementation-for-use-with-python-and-django/2765628#2765628 – Andrei

0

Bien que cela pourrait finir par être plus de problèmes que cela en vaut la peine, il est PROBABLEMENT possible de tirer parti de Java ou.Plate-forme NET et toujours exécuter votre application Django dans Jython ou IronPython (avec quelques ajustements mineurs, j'en suis sûr) et aussi être en mesure de tirer parti de la gemme HAML de Ruby via jRuby ou IronRuby.

Je suis sûr qu'il y aura quelques bizarreries pour que cela fonctionne, mais je suis sûr que ce serait possible. Encore une fois, cela représente probablement beaucoup plus de problèmes que de valeur (étant donné que vous devrez déplacer votre application sur une toute nouvelle plate-forme), ce serait un projet plutôt amusant sur lequel travailler.

0

Je recommande fortement que vous ne fourche tous les processus de votre point de vue django, car la surcharge est importante.

Vous devriez avoir un processus ruby ​​persistant pour servir vos templates pour vous, et l'invoquer depuis votre code django. Je laisse la technologie IPC à vous, mais les choix évidents seraient soit une sorte de technologie de mise en file d'attente des messages, ou de parler HTTP sur une socket au processus de ruby.