Das Fotonexus-Wiki befindet sich im Testbetrieb.
Ruby on Rails
Aus Fotonexus.
| Ruby on Rails | |
|---|---|
| Entwickler: | Rails-Core-Team |
| Aktuelle Version: | 1.2.3 (14. März 2007) |
| Betriebssystem: | Plattformunabhängig |
| Kategorie: | Web Application Framework |
| Lizenz: | MIT-Lizenz |
| Website: | rubyonrails.com |
Ruby on Rails, abgekürzt Rails, ist ein von David Heinemeier Hansson in Ruby geschriebenes und quelloffenes Web-Framework, das im Juli 2004 zum ersten Mal der Öffentlichkeit vorgestellt wurde. Es basiert auf dem Prinzip „Don't Repeat Yourself“ (DRY) und stellt Programmierkonventionen über die Anwendungskonfiguration. Durch seinen Aufbau ermöglicht es rasche Umsetzung von Anforderungen und unterstützt damit agile Softwareentwicklung.
Rails folgt der „Model View Controller“-Architektur (MVC) und besteht aus fünf Modulen:
- Active Support: Ruby-Erweiterungen von Rails
- Active Record: Objektabstraktionsschicht basierend auf dem objekt-relationalen Muster von Martin Fowler (das „M“ aus MVC)
- Action Pack: Request-Behandlung und Response-Ausgabe. Die Anfragen werden durch eine öffentliche Methode des Controllers (Action Controller, das „C“ aus MVC) behandelt. Die Ausgabe wird mittels eines Templates (Action View, das „V“ aus MVC) vorgenommen.
- Action Mailer: E-Mail-Versand und -Empfang
- Action Web Service: Web-Service-Programmierung, Unterstützung für SOAP, XML-RPC und REST.
Rails bietet auch Methoden zur einfachen Entwicklung von Ajax-Applikationen und unterstützt REST.
Inhaltsverzeichnis |
Philosophie
Ruby on Rails ist als Gegenstück zu schwergewichtigen Webframeworks zu verstehen. Anstelle aufwändiger Konfigurationen stellt Ruby on Rails die Konvention über die Konfiguration. So existiert beispielsweise nur eine einzige Konfigurationsdatei, die für die Einstellung der Datenbankparameter verwendet wird. Konfigurationen, wie die Zuordnung von Modellen zu Datenbanktabellen, die andere Webframeworks oft mittels komplexer XML-Dateien herstellen, werden in Ruby on Rails über die Konvention der Namensgleichheit in Singular und Plural hergestellt. So schließt das Framework, dass es sich bei der Klasse Customer um das Modell der Tabelle customers in der Datenbank handelt. Alle Eigenschaften dieser Klasse werden in der Datenbank festgelegt und stehen im Modell automatisch zur Verfügung. Die konsequente Anwendung des DRY-Prinzips unterstützt den Entwickler mit der Vorgabe sinnvoller Defaults. Dennoch erlaubt Ruby on Rails natürlich ein manuelles Überschreiben dieser Konventionen.
Scaffolding
Mittels des eingebauten scaffolding (in Deutsch etwa Gerüstbau) ist es möglich, Web-Anwendungen on the fly zu entwickeln. Wenn in der Datenbank etwa ein Feld hinzugefügt wird, erscheint es auch sofort in der entsprechenden View/New/Edit-Ansicht. Die Möglichkeit des sofortigen Visualisierens eines Datenbankfeldes und das Verknüpfen diverser Datenbankoperationen mit eben diesem Textfeld, wird oftmals auch mit dem Begriff CRUD (Create, Read, Update, Delete) oder CRUD-Framework bezeichnet. Scaffolding ist vor allem für Prototyping gedacht und wird in produktiven Anwendungen fast immer mit eigenem Code ergänzt.
Webserver-Unterstützung
Zum Entwickeln und Testen bietet sich der zum Ruby-Paket gehörende Webserver WEBrick als Applikationsserver an. Für den produktiven Einsatz wird Apache oder Lighttpd mit FastCGI empfohlen, aber auch jeder andere Webserver mit CGI- oder FastCGI-Unterstützung funktioniert. Eine weitere Möglichkeit stellt der größtenteils in Ruby geschriebene Webserver Mongrel dar, der im Gegensatz zu WEBrick für den Produktiveinsatz geeignet ist. Unter Apache kann mod ruby die Leistung verbessern, jedoch wird der parallele Betrieb mehrerer Rails-Applikationen auf demselben Server erschwert und kann zu erheblichen Sicherheitsproblemen führen.
Schichten
Model
Das Backend einer Rails-Applikation bildet im Normalfall eine Datenbank. Der Zugriff auf diese wird mit Hilfe von ActiveRecord hergestellt. Dabei handelt es sich um eine ORM-Schicht, welche eine Klasse auf eine Tabelle und ein Attribut auf eine Spalte abbildet. Ein Datensatz in einer solchen Tabelle entspricht genau einer Instanz. Derzeitig werden die folgenden Datenbanken unterstützt:
Weiterhin besteht die Möglichkeit, ein anderes Format zu verwenden (z. B. XML-Dateien) oder vollständig auf ein Backend zu verzichten.
Controller
Die Steuerungsschicht einer Rails-Applikation wird mithilfe der ActionController-Klasse hergestellt. Diese ist Bestandteil der ActionPack-Bibliothek. Ein Controller kapselt eine bestimmte Geschäftslogik und bietet Schnittstellen, um mit dieser kontrolliert zu interagieren. Diese Schnittstellen werden Actions genannt. Ein üblicher Rails-Request (z. B. URL: //servername.net/controller/action ) enthält den Namen des anzusprechenden Controllers. Dieser ist äquivalent zu dem Klassennamen. Weiterhin wird eine spezielle Action aufgerufen, diese wird innerhalb der Controller-Klasse als Methode dargestellt. Über den eingebauten Routing-Mechanismus besteht jedoch die Möglichkeit, einen solchen Rails-Request nach den eigenen Bedürfnissen anzupassen.
View
Für die Präsentationsschicht ist die Klasse ActionView zuständig. Diese ist ebenfalls Bestandteil der ActionPack-Bibliothek. Folgende Ausgabeformate werden derzeitig von Rails unterstützt:
- HTML
- XML – z. B. für XHTML und Web Services
- JavaScript – RJS-Templates
- Binärdaten
Zusätzlich werden die folgenden Templatesysteme angeboten:
- RHTML – für HTML-Dokumente
- RXML – für XML-Dokumente (z. B. RSS)
- RJS – für die effiziente Erzeugung von JavaScript-Code durch Ruby-Code
Weiterhin besteht die Möglichkeit den HTTP-Header selbst zu manipulieren und so andere Formate an den Client zu senden.
Literatur
- David Thomas, David Heinemeier Hansson: Agile Web Development with Rails. 2005, ISBN 097669400X (auf deutsch: ISBN 3446404864)
- Ralf Wirdemann, Thomas Baustert: Rapid Web Development mit Ruby on Rails. Hanser 2006, ISBN 3446409327
Newsgroups
Das Usenet stellt für die Diskussion rund um Ruby on Rails die folgenden Newsgroups bereit:
- de.comp.lang.ruby (deutschsprachig)
Weblinks
-
<imagemap>-Fehler: Bild ist ungültig oder nicht vorhanden Wikibooks: Ein Tutorial und Einsteigerbuch für Ruby on Rails – Lern- und Lehrmaterialien [[Hilfe:Cache|Fehler beim Thumbnail-Erstellen]]: convert: unable to open image `/var/www/fotonexus/w/images/c/ca/Wikipedia_lexikon3e.jpg': No such file or directory. Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Ruby_on_Rails, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation. - http://www.rubyonrails.org/ – Rails-Homepage (Englisch)
- http://www.rubyonrails.de/ – deutsche Ruby-on-Rails-Seite mit Buchliste und Tutorials
- http://www.rubyonrails-ug.de/ – deutsche Ruby-on-Rails-Usergroup mit Mailingliste, Wiki und Weblog
[[Hilfe:Cache|Fehler beim Thumbnail-Erstellen]]: convert: unable to open image `/var/www/fotonexus/w/images/c/ca/Wikipedia_lexikon3e.jpg': No such file or directory. Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Ruby_on_Rails, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
