About
fv_2007
Agile innovative developer with deep insight into lots of platforms, technologies and protocols. Absolute “early adopter” in Web 2.0 technologies and more. Large professional network and eagerly talking about architecture, strategy, design patterns, restful ressources, object-oriented thinking and modeling languages such as PML. Special interest in programminglanguages constructs, knowledge on languages like Smalltalk, Erlang, Java, Clojure, Scala, Ruby... read more
Comments
Language

Nul til hundrede March 28, 2007 12:00 over 5 years ago

Rails er nok det største ”open source” projekt som er introduceret de sidste 10 år. Det er blevet udnævnt til det mest produktive web udvikling framework til alle tider og er blevet baseret på det mere og mere vigtige Ruby programmeringssprog.

Hvad er der sket op til nu.

I december 2006 er der flere publiceret bøger med Rails end noget andet Java framework medregnede de store flagskibe som JSF, EJB, Spring og Hibernate.

Rails er downloaded op imod 1 million gange på 2 år. Det springer alle forventninger om et ”open soruce” projekt på kryds af alle programmeringssprog.

Rails mail list modtager daglige flere hundrede indslag eller spørgsmål modsat de næst største som kun får dusinvis henvendelser.

Rails har forsaget en sand eksplosion i brugen af Ruby programmeringssproget som hidtil har levet som et stille tilbagetrukket liv.

Rails er kun lige kommet i fart men med stadig større og større kraft i debatten omkring portaler som har fokus på andre programmeringssprog. Især blandt Java folk er der meget buzz, sikkert som en følge af den større og større fluffiness i Java platformen.

Der findes allerede en masse videoer hvor man kan se dygtige udviklere bygge simple web applikationer med database bliver til på ca. 10 min. Men her er det ikke quick-and-dirty man ser. Rails lader dig beholde det quick og lader det dirty blive tilbage. Du kan bygge hurtige rene web applikationer basseret på model-view-controller filosofi. Rails er et specielt framwork.

Rails har dog også svagheder. Feks dårligt support for ORM imod legacy tabeller. Rails tilgang er endnu ikke så stærk som for Java, idet der ikke findes et flagskib IDE som eclipse for Java. Alle sprog og framworks har stærke og svage sider men til en lang rækker applikationer har Rails lang overvejene fordele frem for begrænsninger.

Jeg vil løbe igennem en række ting som for mig gør at jeg ikke kan komme udenom Rails og derigennem Ruby.

Metaprogrammering

Metaprogrammering er en teknik som lader programmer skrive programmer. Mange frameworks udnytter kode generering for at give en produktiv start men så ikke mere mens andre genrerere selektiv. Metaprogrammering erstatter de to kendte teknikker og eliminere deres ulemper. Ruby er måske det bedste programmeringssprog til dette og Rails er i vid udstrækning bygget på netop den egenskab.

ActiveRecord

ActiveRecord i Rails er en implementering af et design mønster fra Martin Fowler bare på steroids. ActiveRecord står for al persistering af objekter til databasen. ActiveRecord udnytter i høj grad metaprogrammering og man behøver kun at tænke på relationerne mellem modelobjekterne. Denne metode kaldes at wrappe en database frem for at mappe tabellerne. ORM. Denne fremgangs måde er simple, elegant og kraftfuld.

Convention over configuration

I Java og .NET er alle applikationer lige svære at konfigurer til alle opgaver. Rails indenholder et set af konventioner som er kendt og adopteret af alle og som gør ekstra konfiguration næste overflødig. Convention over configuration bygger på en forståelse af det faktum at alle sider og laver det samme, man er ikke speciel og kan derfor

Scaffolding

Med scaffolding kan man få Rails til at lave superhurtig prototyping. Hvorvidt man vil fryse koden eller laver ændringer betyder ikke noget. Scaffold er basset på metaprogrammering og updater nemt hele modellen. Når datamodellen er stabil udskiftes bid for bid af scaffold.

Three environments

Rails giver dig tre default miljøer, development, test og produktion. Hver miljø opføre sig forskelligt og gør hele udviklings cyklen mere enkel. F.eks. laver Rails en frisk kopi af test databasen før hver test kørsel.

Build-in testing

Rails bygger simple automatisk tests som kan udnyttes. Rails laver også fixtures som gør test nemmere at skrive og køre. Rails kan køre alle dine test ved hjælp af rake, din imaginære udviklings ven.

Blocks

Blocks er basalt navnløse funktioner. Som lamba fra Lisp eller Python. Man kan give en navnløs funktion til en anden funktion, og så kan den funktion kalde tilbage til den navnløse funktion. For eksempel kan en funktion ilterere ved at give et element af gange til den navnløse funktion.

Det er et stil kaldet, ”higher order function style”, og mange sprog gør det.

Det specielle mellem Ruby og mange andre sprog er syntaksen. I andre sprog skal man specificere eksplicit at en funktion kan acceptere en anden funktion som et argument.

Men i Ruby kan alle metoder blive kaldet med en block som et eksplicit argument. I en metode kan en block kaldes med yield og en værdi.

Closures

En Closure har kode som kan eksekveres og den medfølgende adfærd, scope.

Så man indkapsler det område med lokale variabler, i en closure. Som et resultat kan man referere til de lokale variabler i en closure. Selv efter en funktion har returneret og det lokale scope er nedlagt eksistere de lokale variabler stadig som en part i closure objektet. Først når ingen referencer findes til closure bliver den elimineret af gc.

OG der er meget mere endnu, som Ajax, partial views, helpers, gems, osv


By Frank Vilhelmsen - 2 tags: rails ruby - Add comment