2010-06-20 21 views
19

Ok, entonces realmente amo HAML. Particularmente, me encanta la integración con RedCloth y BlueCloth, así que puedo usar Markdown y Textile entremezclados con mi HAML.Ruby HAML con Django?

También me encantan Python y Django.

Entonces, me gustaría usar HAML con Django. Ahora, ya entiendo que hay algunos intentos de clonar la sintaxis similar a HAML en Python (SHPAML y otros). He intentado esto, y aunque no están mal, he descubierto que realmente solo quiero el HAML real. Parcialmente por su sintaxis, pero también por cosas como RedCloth y BlueCloth.

Entonces, mi pregunta es, ¿cómo hacer que HAML y Django trabajen juntos?

Una solución, creo, sería crear plantillas HAML, y luego compilarlas en HTML utilizando la herramienta de línea de comandos cada vez que se actualicen.

Quesiton 1: ¿Puedo encontrarme con algún problema aquí?

También me pregunto si hay una manera de hacer que Python y Ruby jueguen juntos un poco más. Una idea que tenía en realidad consistía en realizar procesos de Ruby. Esta es probablemente una mala idea, pero ¿alguien tiene alguna idea al respecto?

Pregunta 2: ¿Qué hay de usar Python para llamar al Ruby HAML real?

Por último, si alguien sabe de una implementación de Python de HAML que es completa, y que es compatible con cualquiera de textiles o de rebajas, así como de tránsito texto plano, a continuación, que me haga saber.

Pregunta 3: ¿Hay una traducción completa de HAML a Python incluyendo Markdown o soporte técnico?

Gracias!

Respuesta

8

Pregunta 1: los archivos HTML estáticos deberían funcionar bien (a menos que planee usar la función de evaluación de ruby ​​de HAML para contenido dinámico). Utilizo una manera similar en un sitio web php con hojas de estilo SASS. Sólo asegúrese de que inicie HAML en el modo de reloj de directorio antes de empezar a cortar;)

Pregunta 2: mientras que se bifurcan un proceso de rubí para crear código HTML es posible, pero yo no lo recomiendo, porque la inicialización de un rubí El intérprete y cargar los archivos requeridos requiere una gran cantidad de horas de CPU, por lo que es mejor que se quede con los archivos estáticos. Si necesita la función de evaluación de ruby ​​para incluir datos creados en tiempo de ejecución en el documento, será mejor que eche un vistazo a eventmachine y lo convierta en un servidor (para que su aplicación Django pueda conectarse y solicitar la generación de HTML, sin forzar un nuevo intérprete cada vez).

Pregunta 3: quizás este es el más difícil. Hay GHRML que está abandonado; SHPAML que solo implementa un pequeño subconjunto de HAML, DMSL, que actualmente es muy experimental, pero ya es compatible con la mayoría de HAML y también llama al código python, pero carece de compatibilidad con Markdown o Textile. Pero aparentemente no hay alternativa (todavía) para Ruby HAML que admita todas las características requeridas.

+0

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

0

Si bien esto podría terminar siendo más problemático de lo que vale, es PROBABLEMENTE posible aprovechar Java o.Plataforma NET y aún ejecutar su aplicación Django en Jython o IronPython (con algunos ajustes menores estoy seguro) y también ser capaz de aprovechar la gema HAML de Ruby a través de jRuby o IronRuby.

Estoy seguro de que habrá algunos caprichos en hacer que esto funcione, pero estoy seguro de que sería posible.

De nuevo, esto es probablemente mucho más problemático de lo que vale (teniendo en cuenta que tendría que mover su aplicación a una plataforma completamente nueva), pero sería un proyecto bastante divertido para trabajar.

0

os recomiendo que no desembolsar cualquier proceso fuera de sus puntos de vista de Django, debido a la sobrecarga es significativa.

Debe tener un proceso persistente de ruby ​​para servir sus plantillas para usted, e invocarlo desde su código django. Le dejo la tecnología de IPC, pero las elecciones obvias podrían ser algún tipo de tecnología de cola de mensajes o hablar HTTP sobre un socket al proceso de ruby.