Wie auf Schienen

Teil 2: PHP-Alternativen: Ruby on Rails

Scaffolding

Scaffolding war beim ersten Erscheinen von RoR eine weitere, für Webframeworks revolutionäre, Neuerung. Die Idee dahinter ist es, die Grundoperationen, die auf eine Datenbanktabelle ausgeführt werden, ebenfalls durch das Framework zur Verfügung zu stellen. Hierbei handelt es sich um die sogenannten CRUD-Funktionen. CRUD ist eine mittlerweile gängige Abkürzung und steht für Create, Retrieve, Update und Delete.

Für die Erstellung von Masken, welche diese Funktionen fix und fertig implementieren, genügt der Aufruf des folgenden Befehls in der Konsole:

$> ./script/generate scaffold Post demoproject

Rails generiert anschließend automatisch die Controller und View-Dateien, welche die Masken zum Editieren von Blogeinträgen zur Verfügung stellen. Die Inhalte der Daten richten sich wie gehabt nach den Properties, die in den Model-Klassen zur Verfügung stehen und damit auch direkt nach den Feldern und Typen in der Datenbanktabelle selbst.

Selbstverständlich sind diese automatisch erzeugten Masken rudimentär und genügen nur ersten Anforderungen. Der erzeugte Quellcode kann aber sehr gut als Basis für die weitere Entwicklungsarbeit dienen.

Konfiguration

Ruby on Rails setzt bei Konfigurationsdateien auf das YAML-Format. Dieses sehr kompakte und ohne Meta-Sprachelemente auskommende Textformat eignet sich sehr gut, um übersichtliche Konfigurationsdateien zu schaffen. Anpassungen der Konfiguration sind aber nur in wenigen Fällen notwendig, da Rails ja Konventionen den Vorrang vor Konfigurationen gibt.

Generell sind die vorhandenen Konfigurationsdaten umgebungsabhängig. Das folgende Listing zeigt die Datenbankkonfiguration eines Rails-Projektes im YAML-Format. development:

adapter: mysql
database: smartdispatch
host: localhost
username: root
password:
production:
adapter: mysql
database: smartdispatch
host: srv-de-wdb1
username: smartdispatch
password: dsf3imq2nm1

Für die beiden Umgebungen development und production sind hier verschiedene Datenbanken hinterlegt. Welche Konfiguration letztendlich genutzt wird, entscheidet sich über den sogenannten Front-Controller.

Je nach Aufruf wird so die Konfiguration für die Produktiv- oder Entwicklungsumgebung genutzt. Diese Unterteilung zieht sich durch alle Konfigurationsdateien von Ruby on Rails. Dabei ist man nicht nur auf diese beiden Umgebungen eingeschränkt. Sie können beliebige weitere Umgebungen in der Konfiguration ablegen, was beispielsweise für ein Test- oder Staging-System durchaus sinnvoll sein kann.

Server

Ruby ist mittlerweile auf allen wichtigen Betriebssystemen zuhause. Neben Linux und Windows, wird beispielsweise auch MAC OS X als Plattform unterstützt. Daher ist es kaum verwunderlich, dass mittlerweile auch die Zahl der Hoster, die Ruby und damit auch das Rails-Framework unterstützten, deutlich zugenommen hat.

PHP-Alternativen: Ruby on Rails

© Archiv

Per Kommandozeile lassen sich ganze Grundgerüste für Anwendungen erstellen.

Neben dem oftmals bevorzugten Mongrel-Server, können auch der Apache-Webserver oder unter Umständen auch Java-Application-Server wie Tomcat, Jboss oder Glassfisch zum Einsatz kommen. Ruby verhält sich auf allen Plattformen nahezu gleich, sodass es kaum zu Schwierigkeiten bei Plattformwechseln kommt. So kann die Entwicklung beispielsweise auf einem Windows-System erfolgen und auf ein Unix-basiertes Betriebssystem installiert werden.

Fremdgegangen

Eine recht interessante Entwicklung im RoR-Lager ist die Portierung von Ruby auf verschiedene Plattformen. Mit dem JRuby-Projekt () existiert eine komplett in Java programmierte Ruby-VM, auf der auch Rails ablauffähig ist.

Zwar kommt diese Lösung nicht ganz an die Geschwindigkeit der in C entwickelten Standard- Ruby-VM heran, hat aber einige Vorteile, die den Einsatz durchaus lohnenswert erscheinen lassen können.

Der wichtigste ist die Integration mit Java. Durch diese Integrationsmöglichkeiten ist es problemlos möglich, Java-Klassen direkt in Ruby-Programmen einzusetzen. Das folgende Listing zeigt ein einfaches Beispiel hierfür.

require 'java'
import java.lang.System
version = System.getProperties
["java.runtime.version"]
print version

Durch den Befehl require 'java' werden die Klassen der Java Standardklassenbibliothek eingebunden. Diese können, wie im Beispiel zu sehen, nahtlos innerhalb von JRuby verwendet werden.

Selbstverständlich lassen sich so auch komplexere Bibliotheken einbinden und verwenden. Das folgende Beispiel zeigt die Instanzierung der FOP-Bibliothek zur Erstellung von PDF-Dateien aus XML-Daten:

Dir["/Users/thaberkern/bin/jruby/
lib/fop/*.jar"].each { |jar| require
jar }
require 'fop.jar'
module ApacheFop
include_package "org.apache.
fop.apps"
end
fopfactory = ApacheFop::FopFactory.
newInstance();

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".