Hopp til innholdet

cjohansen.no

Er ikke Erb bra nok?

Det er tydeligvis flere enn meg som har Erb templates som sin minste favoritt-del av Rails. Da jeg først satte meg inn i Rails var jeg veldig oppstemt og gira over hvor lett og rent og pent det hele så ut, helt til jeg satt meg inn i malene. Jeg har alltid fått litt mark av “scriptlets”, enten det er jsp scriptlets, en helt vanlig html/php miks eller en eRB template - selv med Rails helpers. Men jeg har vendt meg til det. Så kom jeg over Hobo (takk til Thor Fredrik Eie).

Hobo er egentlig en plugin til Rails, men gutta bak har også laget en wrapper slik at du kan bruke Hobo som om det var en utvidet versjon av Rails (som det jo på en måte er…) Jeg har nå kikket på en screencast der de demonstrerer hva Hobo gjør, og hvordan. (Dette gjøres selvfølgelig på en Mac, det er tydeligvis påkrevd for å få Ruby-cred..) Og det ser, som Rails-relaterte ting ofte gjør, imponerende ut. Det minner meg faktisk litt om både Symfony, et PHP MVC-rammeverk med “admin-generator”, og Python-baserte Django - “The web framework for perfectionists with a deadline”. De har også kommet med et annet artig “slagord”: “Rails gives you scaffolding, Django gives you the whole house”.

Felles for alle disse er at de prøver å gi deg - basert på dine egne datamodeller - en ferdig applikasjon som har et ålreit utseende, autentisering og brukerroller, samt mulighet til å opprette, endre, slette og lese innhold fra databasen din.

Det som er ekstra interessant med Hobo er “DRYML”, Don’t repeat yourself markup language. Et markup-språk å lage Rails- (og Ruby uten Rails vil jeg tro) templates med som tillater, men i stor grad eliminerer behovet for, eRB “scriptlets” og Rails helpers. Og jeg jubler for initiativet. Sjekk ut dette eksempelet:

Erb:

<code><h1>Todo List: <%= @todo_list.name %></h1>
 <ul>
   <% @todo_list.tasks.each do |task| %>
     <li><%= link_to task.name, :controller => "tasks",
                                :action => "show",
                                :id => task %></li>
   <% end %></code>

DRYML:

<code><h1>Todo List:</h1>
 <ul_for attr="tasks"><name_link/></ul_for></code>

Dette ser utvilsomt lovende ut! Det er selvfølgelig opprettet noen tagger som ikke vises her, men poenget er at det er store muligheter til å rydde opp viewet sitt med slik kode. Min umiddelbare bekymring er selvfølgelig ytelse, siden DRYML ikke kompileres, slik som for eksempel dens artsfrende JSP gjør. Og nettopp JSP har nok vært en inspirasjon for dette språket , her finnes taglibraries og det hele. Jeg vil i det hele anbefale å følge med på prosjektet, det kan vise seg å bli riktig så spennende.

Det finnes flere som har prøvd seg på å “rydde opp” Rubys standard Erb templates. #haml er en annen variant, som jeg personlig ihvertfall fikk syntaksen til i halsen. Med unntak av YAML har jeg aldri vært noen fan av XML som ikke skrives som XML, men med en masse % # ! = osv.

En annen variant igjen som ligner litt på #haml og enda litt mer på rxml er Markaby. Heller ikke denne falt spesielt i smak her. Spørsmålet er egentlig om Erb/Rails helpers ikke er bra nok? Treger vi noe bedre, noe som er renere? Fordelen med Erb er selfølgelig det som gjennomsyrer hele Rails, nemlig at man bruker Ruby, akkurat som i kontrollerne, akkurat som i konfig, akkurat som i byggescriptet. Det er ikke hundre forskjellige scriptspråk, xml-dialekter osv å forholde seg til, det er bare Ruby. Og det er et godt poeng. Men jeg må si at DRYML ser ut til å kunne by på betraktelig forbedringer i viewet, både i leselighet og DRYhet. Jeg følger spent med, og tipper at jeg er ivrig bruker innen de når 1.0 ;)

Muligens relatert

2006 - 2012 Christian Johansen Creative Commons Lisens