Was ist Rails
Ruby On Rails (ROR/Rails) ist eine MVC-Framework für datenbankgestützte Webanwendungen, welches in der Sprache
Ruby geschrieben ist.
Entwickelt wurde es nicht wie die meisten Webframeworks im "Labor", sondern an dem
Kollaborationsportal
Basecamp. Nach Fertigstellung des Portals wurde
Rails von
David Heinemeier Hansson aus Bascamp extrahiert und 2004
unter MIT-Lizens veröffentlicht. Am 13.12.2005 erreichte Rails Version 1.0 und verließ somit den Betastatus.
Neben den Portalen der Firma
37signals gehört u.a.
die bekannte Webseite
penny-arcade zu den prominenten Beispielen
für Rials im WWW.
[top]
Model View Controller (MVC)
Rails ist wie viele andere Webframeworks auch ein Model-View-Controller-Framework. Die strikte Trennung in einzelne
Teile ermöglicht eine saubere Trennung von Daten, Funktion und Layout, dadurch wird eine hohe Wartbarkeit des jeweiligen
Projekts erreicht.
Unter "
Rails: Architektur" wird genauer auf den MVC-Ansatz von Rails eingegangen.
[top]
Object Relational Mapping (ORM)
Auch in Zeiten der Objektorientierung werden, besonders im Bereich der Webanwendungen, die Datenbestände in
relationalen Datenbanken, wie z.B.
MySQL, vorgehalten. Hierdurch kommt es bei der
Verwendung von objektorientierten Sprachen zu einem Stilbruch. Um diesen zu verhindern greift Rails auf das
Object-Relational-Mapping zurück.
ORM geht von folgendem aus:
- Eine Tabelle wird zu einer Klasse
- Ein Datensatz der Tabelle wird zu einem Objekt der jeweiligen Klasse
- Ein Attribut eines Datensatzes wird zu einem Attribut des Objekts
Diese Kapselung erlaubt unproblematisches Arbeiten mit relationalen Datenbanken in objektorientierten Umgebungen.
[top]
Create, Read, Update, Delete (CRUD)
Diese grundlegenen Funktionen müssen in jeder datenbankgestützen Anwendung implementiert werden. Rails liefert sozusagen
diese Funktionalität schon ab Werk mit. Somit ist kein oder kaum Low-Level-Code in Rails notwendig um auf den Daten in der
Datenbank zu arbeiten, das Gleiche gilt ebenso für Kenntnisse in SQL.
[top]
Convention Over Configuration (COC)
Die Eigenschaft von Rails ist eine Revolution für die Webframeworks, da die meisten von ihnen eine umfassende
Konfigration benötigen, welche allein meist schon einen großen Anteil an den Lines of Code des Projekts darstellt.
Rails hingegen koventionirt die Namensgebung der einzelnen Teile des Projekts und erreicht so, im Zusammenhang mit
sinnvollen default-Werten, dass keine langatmige Konfiguration nötig ist. Zusätzlich kann man diese Konventionen auch
mittels Konfiguration umgehen.
[top]
Don't Repeat Yourself (DRY)
Rails ist DRY:
In Ruby on Rails solle eine Wiederverwendbarkeit von einzelnen Teilen möglich sein. So wird die Redundanz in der
Anwendung erheblich reduziert und damit eine einfache Wartbarkeit ermöglicht. Ein positiver Nebeneffekt ist, dass Rails schon mit einer
Vielzahl von nützlichen Funktionen einherkommt und so unter dem Strich weniger Code selbst geschrieben werden muss.
[top]
Weitere Eigenschaften
Generatoren
Die Generatoren verringern zusätzlich den zu schreibenden Code. Sie erzeugen automatisch Funktionalität für das
Projekt, indem sie die benötigten Dateien und ein Code-Grundgerüst anlegen. Der mächtigste von Rails mitgelieferte
Generator ist das "Scaffolding". Es erzeugt eine komplette Verwaltung für eine einfache Datenbanktabelle.
Es besteht zudem noch die Möglichkeit eigene Generatoren zu schreiben und/oder Generatoren aus der Community zu downloaden.
Modularisierung
ROR ist in seiner Reinform eine Kombination aus fünf Modulen:
- Active Support
- Active Record
- Action Pack
- Action Mail
- Active Webservice
Diese können um eine Vielzahl von weiteren Modulen erweitert werden um besonderte Funktionalität nutzen zu könnnen, wie
z.B. Bezahlsysteme.
Web 2.0
Rails ist, wie alle modernen Frameworks für Webanwendungen auch Web 2.0 ready. Dieses äussert sich in der nativen AJAX
(Asynchronous JavaScript and XML) und SOAP (Simple Object Access Protocol) Unterstützung. Für AJAX wird auf das bekannt
Javascript-Framework
prototype zurückgegriffen.
Testdriven Development
Das Framework hat eine komplette Testumgebung integriert, sie ermöglicht jede Schicht der Anwendung zu testen.
So ist eine einfache Verifizierung der korrekten Funktion auch nach einer umfassenden änderung am Projekt
schnell durchzuführen.
Caching
Um Rails-Anwendungen zu beschleunigen, ist das Caching schon durch das Framework selbst gegeben und muss nicht
nachträglich intigriert werden.
Datenbankmigration
Die Portabilität einer ROR-Anwendung wird zum Einem durch die Verfügbarkeit des Frameworks für unterschiedliche
Plattformen, zum Anderen durch die ins Framework integrierte Datenbankmigration gewährleistet. ROR kann die Struktur und
die Daten einer Datenbank in einem datenbankunabhängigen Format exportieren und auch wieder importieren. Somit ist ein
on-the-fly-Wechsel des Datenbank-Management-Systems (DBMS) möglich.
Umgebungen
Die Dynamik des Frameworks zeichnet sich auch durch variable Laufzeitumgebungen aus. So kann für die Entwicklung eine
andere Datenbank und eine höhere Loggingstufe verwendet werden, als im Produktivmode. Neben den vordefinierten Umgebungen:
development, test und production, können auch eigene definiert und verwendet werden.
WEBrick
Dass Rails ein Komplettpaket ist, zeigt sich besonders bei der Installation: neben Ruby&Rails muss nur die Datenbank
installiert werden. Denn ein in Ruby geschriebender Webserver ist schon bei jeder ROR-Anwendung dabei: der
WEBrick-Webserver.
[top]