Überblick

-Was ist Rails
-MVC - "Model View Controller"
-ORM - "Object Relational Mapping"
-CRUD - "Create, Read, Update, Delete"
-COC - "Convention Over Configuration"
-DRY - "Don't Repeat Yourself"
-Weitere Eigenschaften


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]