O que é Haml?
Haml é uma DSL para construir layouts em HTML utilizando nada menos que Ruby.
Quase nada tem se falado sobre Haml no Brasil mas tenho certeza que é bastante utilizado. Para entender a idéia dele podem acessar esse post do Fábio Akita.
No começo um pode ate não gostar do Haml por estar acostumado com as tags HTML, mas com o tempo os sentimentos vão mudando. O Haml é uma ferramenta excelente, muito produtiva e é uma das tecnologias das quais sento muitas saudades na plataforma Java. Foi por tal motivo que decidi criar o Haml4j.
O que é Haml4j?
O Haml4j é um projeto muito simples, porém muito poderoso devido a que permite utilizar o melhor do Haml nos containers de servlets Java. Para conseguir tal objetivo, o Haml4j utiliza o JRuby como implementação da especificação JSR 223, que define como as diferentes linguagens de script existentes (Ruby nesse caso) devem interagir com a plataforma Java.
Como funciona?
Basicamente o Haml4j é uma servlet que carrega scripts Haml e utiliza o próprio parser do Haml através do JRuby para convertir tal código em HTML. Seguidamente ele substitui as variáveis do script (no formato ${xpto}) com o valor correspondente que provem do controller ou request.
Haml4j em ação
Para demonstrar o funcionamento do Haml4j criei uma aplicação de demonstração no Github. A aplicação utiliza um fork do VRaptor (do qual vou falar proximamente) como controller e o Haml4j se encarrega das views.
Requisitos
Para poder executar a aplicação é necessário que o JRuby tenha instalada a Gem Haml. Para o JRuby poder utilizar as Rubygems na JVM é necessário que ele conheça algumas propriedades do sistema. A forma mais fácil de indicar ao JRuby as propriedades é passando elas como parâmetros na inicialização da JVM. Eu realizei os testes no Tomcat e criei um script onde seto os valores das propriedades e logo chamo o script de inicialização do servidor, assim:
export JRE_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home" export JRUBY_HOME="/Users/dcrec1/plataform/jruby-1.1.3" export JRUBY_SHELL="/bin/sh" export JAVA_OPTS="-Djruby.home=$JRUBY_HOME -Djruby.lib=$JRUBY_HOME/lib -Djruby.script=jruby -Djruby.shell=$JRUBY_SHELL" ./startup.sh
Finalizando
Espero que gostem do projeto e poda ser útil. Caso alguem tenha alguma correção para algum erro ou alguma modificação, não duvidem em me avisar, criar um fork ou solicitar acesso de escrita ao repositório.
6 respostas ate agora ↓
1 Leandro // Aug 27, 2008 at 10:00 am
Ahammmm… então era isso que você tava fazendo com JRuby? Muito legal, cara. Parabéns!
É com projetos assim que vamos mostrando ao mundo o poder da integração entre linguagens, tirando proveito do que cada uma tem de melhor.
Valeu!
2 Diego Carrion // Aug 27, 2008 at 10:10 am
Hahaha era isso mesmo Leandro. Teu post me ajudou bastante, valeu para você também
3 Interpretando Ruby e outras linguagens de script dentro da plataforma Java // Aug 29, 2008 at 12:02 am
[…] RSS ← Haml4j, Haml na plataforma Java […]
4 Nome do Jogo » Blog Archive » Rails Podcast Brasil - Episódio 30 // Sep 3, 2008 at 11:58 am
[…] Haml4j, Haml na plataforma Java […]
5 megamega // Oct 23, 2008 at 7:02 am
Looking To Grow Your Myspace List?
at: http://tinyurl.com/5z7h8m
6 meadacaks // Dec 28, 2008 at 9:51 pm
Hey! I love your site
If u r looking for Paid Surveys this is the place 4 u.
Start advancing your paychecks at http://tinyurl.com/8eysyc
Deixar um comentário