der kl@mmeraffe | ruby. java. development.

a developers guide to the world of code

Friday, December 23, 2005

Ruby on Rails

I have translated this article in english here

(this is an older article in german, you can find new articles here

Ruby on Rails ist ein streng auf MVC basierendes Web-Framework, geschrieben und erweiterbar in und mit Ruby. Es baut sehr stark auf einem Generator-Ansatz auf, die komplette Verzeichnisstruktur und die Vorlagen für Models, Views und Controller können generiert werden. Durch den weitesgehenden Verzicht auf Konfigurationsfiles ist es auch für Menschen mit Abneigungen gegenüber Administrationsübungen (Der Autor schließt sich hier ausdrücklich ein) wunderbar geeignet.
Es entfallen sinnentleerte Mapping-Dateien (Klasse Angebot -> Tabelle Angebot), da Ruby anhand von Namensgleichheit zwischen der R- und O-Welt die Objekte und Attribute auf die Datenbank mappt.

Um das ganze auch mal anhand eines Beispiels zu testen, hier eine kleine, praktische Anwendung: Eine Todo-Listen-Verwaltung. Hier sollen Todo-Listen nebst einzelnen Todos angelegt, geändert, gelöscht und angesehen werden können.

Aber kommen wir zuerst zur Technik. Um mit Rails arbeiten zu können brauchen wir zuerst Ruby, das bekommen wir auf der Ruby-Homepage. Um eine Datenbankanwendung entwickeln zu können, benötigen wir ausserdem ein Datenbanksystem. Typischerweise verwenden wir hier das (mittlerweile) auch einfach zu bedienende MySQL, hier im Beispiel in der Version 4.1. Nebst dem kostenlosen MySQL Administrator 1.1. Beides auf der MySQL-Homepage zu beziehen.

Nach der Installation können wir in per Kommandozeile mit dem bei Ruby mitgelieferten Package Manager Rails installieren.
gem install rails --include-dependencies

Nun erstellen wir das Projekt "Todo":
rails todo

Dadurch wird der komplette Verzeichnisbaum generiert. In dem Unterverzeichnis "app" landen später die views, models und controller.

Als nächstes erstellen wir eine neue Datenbank (Schema) unter MySQL mit Namen "todo" inklusive zwei Tabellen:
lists (id, name, bezeichnung)
todos (id, name, txt, list_id)

So, jetzt editieren wir im Verzeichnis todo/config die Datei database.yml und passen sowohl die Entwicklungs-, Produktions- und Testdatenbankeinstellungen entsprechend unserer Umgebung ein.

Starten wir nun den Web-Server:
ruby script/server

Mit einem Klick auf http://localhost:3000 bekommen wir den erfolgreichen Start bescheinigt.

Lassen wir Rails nun seine Stärken ausspielen. Durch die Benennung der Listen-Tabelle in "lists", schließt Rails darauf, dass eine Komponente "List" in unserer Anwendung auf sie mappt. Rails ist hierbei (im Englischen) sehr Clever, mappt auch von "Entries" auf "Entry". Hier erkennen wir zum ersten Mal den von den Entwicklern und dem Autor vertretenen Vorsatz "Konvention über Konfiguration". Zwar ist der Code Konventionen unterlegen, dafür sind Deployment-Deskriptoren und Mapping-Files passe.

Generieren wir nun model und controller der Komponente "List":
ruby script\generate model List

ruby script\generate controller List

Erneut generiert Rails die Stubs für uns, inklusive Helper-Klassen und Unit-Tests.

Editieren wir nun unter app/controller die Datei list_controller.rb und schreiben innerhalb der Klasse
scaffold :list

Ein Klick auf http://localhost:3000/list/new zeigt uns, was wirkliches Prototyping ist. Die CRUD (Create, Remove, Update, Destroy) Funktionalität ist komplett vorhanden. Und das mit nur einer Zeile Code im Controller.

Mehr hierzu demnächst.

add this article to del.icio.us

add to del.icio.us | submit to digg | submit to reddit

1 Comments:

  • At 1:06 PM, Anonymous Anonymous said…

    ...und wenn man dies in Java haben
    möchten, dann kann man sich ja mal
    Open-jACOB ansehen.

    Geht in die Richtung MS-Access für
    WebApplikationen.

    http://www.openjacob.org
    http://www.openjacob.org/draw2d.html

    Lieben Gruss

    Andreas

     

Post a Comment

Links to this post:

Create a Link

<< Home