Ruby on Rails

Ruby on Rails, abgekürzt Rails oder RoR, ist ein von David Heinemeier Hansson und der Firma 37signals auf Macs in Ruby geschriebenes, quelloffenes Web-Framework, das im Juli 2004 zum ersten Mal der Öffentlichkeit vorgestellt wurde. Seit Anfang 2007 steht es in der Version 1.2 zur Verfügung die umfangreich erweitert wurde.

Rails bietet auch Methoden zur einfachen Entwicklung von Ajax-Applikationen.

Noch heute empfiehlt man für die Entwicklung ein Mac System, auch wenn die Software komplett Plattformunabhängig ist.

Ruby on Rails erschien, wie auf der WWDC angekündigt auf dem neuesten MacOS 10.5: Leopard.

Philosophie und Beschreibung

Ruby on Rails ist als Gegenstück zu schwergewichtigen Webframeworks wie WebObjects zu verstehen. Anstelle aufwändiger Konfigurationen stellt Ruby on Rails die Konvention über die Konfiguration. So existiert beispielsweise nur eine Konfigurationsdatei für die Einstellung der Datenbankparameter. 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.

Rails vertritt das Prinzip „Don't Repeat Yourself“ (DRY) und stellt Programmierkonventionen über die Anwendungskonfiguration. Rails folgt recht strikt dem „Model View Controller“-Schema (MVC) aus der objektorientierten Programmierung und besteht aus fünf Modulen:

  • 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 und XML-RPC.
  • Active Support: Ruby-Erweiterungen von Rails

Installation auf dem Mac

Im Folgenden eine Anleitung für MacOS X Benutzer zur Installation von RubyOnRails auf dem eigenen Rechner. Die Anleitung funktioniert in dieser Form auf auch für FreeBSD oder Linux.

Einleitung

Diese Anleitung zeigt wie man ein RubyOnRails System auf dem Mac installiert. Es gibt zwar grafische Umgebungen wie Locomotive die soetwas ohne eigenes zutun erledigen, aber meist wird doch der unten beschriebene Weg gewählt - was auch an einem seinerzeit vielbeachteten Blog Eintrag von Dan Benjamin liegt. Im folgenden also eine aktuelle Anleitung zur Installation. Sie sollte auch für andere UNIX-basierende Systeme funktionieren.

Was macht unser Ruby On Rails Entwicklungssystem aus?

Im Rahmen dieser Anleitung installieren wir folgende Hauptbestandteile, die sich als ideal für ein Rails System erwiesen haben:

  • Ruby 1.8.6 - Die Sprache an sich.
  • Ruby on Rails 1.2.3 - Das eigentliche Web-Framework mit seinen Bestandteilen
  • lighttpd 1.4.13 - Ein kleiner schneller Webserver
  • MySQL 5.0.37 - Ein Datenbankserver

Ruby schon mit MacOS X 10.4 ausgeliefert, allerdings ist die von Apple gebaute Fassung bis zu Betriebssystemupdate 10.4.8 nicht fehlerfrei und so nicht für Rails verwendbar. Ab 10.4.8 kann man auf die Installation eines neuen Ruby verzichten, wir empfehlen aber trotzdem die aktuellste 1.8.6 zu installieren.

Wir installieren ausserdem noch ein paar Tools und Bibliotheken um die gerade genannten Programme laufen lassen zu können: readline 5.2, PCRE 7.0, FastCGI 2.4.0 und RubyGems 0.9.0.

Für die Entwicklungsarbeit später empfehlen wir als Editor unbedingt TextMate oder die Carbon Version von Emacs. Jeder andere Texteditor, also auch TextEdit, tut es aber auch.

Den Webserver lighttpd (auch Lighty genannt) benötigt man nicht unbedingt, da Rails einen eigenen Webserver (webrick) mitbringt. Dieser ist allerdings nicht sehr schnell. Wer lighttpd weglassen möchte, kann das tun und dann auch auf die Installation von PCRE, FastCGI und den entsprechenden RubyGems Paketen verzichten. Wir empfehlen dies allerdings nicht.

Noch dabei? Prima! Fangen wir also an...

Voraussetzungen

  • MacOS X 10.4
  • Ein aktuelles installiertes Xcode
  • Ca. 20 Minuten Zeit (auf einem aktuellen Mittelklasse Intel Mac, sonst ein paar Minuten mehr)

Die Installation

Da es sich um eine Reihe von Server-Programmen aus dem Unix Umfeld handelt, die wir im folgenden kompilieren und installieren, findet die Installation mit einer Ausnahme komplett im Terminal statt. Die Software installieren wir, wie für selbst installierte Software unter Unix üblich, in das Verzeichnis /usr/local, welches vom Finder aus üblicherweise nicht sichtbar ist.

Starten wir also zunächst Terminal per Doppelklick auf sein Icon (in /Programme/Dienstprogramme). Bei der Gelegenheit packt es am besten direkt ins Dock, wir brauchen es noch ein paarmal.

Arbeitsverzeichnis

Nach dem Start befinden wir uns in unserem Benutzerverzeichnis. Hier legen wir uns einen Arbeitsordner für die Installation an:

mkdir rails_installation
cd rails_installation

Der Name und der Pfad wo ihr diesen Ordner anlegt ist eigentlich egal. Wichtig ist nur, das alles was jetzt folgt, in diesem Ordner stattfindet.

Pfade

Was jetzt kommt ist extrem wichtig, damit die Installation funktioniert und auch unser Rails System, wenn es später fertig ist. Unix-Betriebssystem können Programme nur aus Pfade ausführen, die dafür explizit angegeben wurden. Da bisher vermutlich nichts in /usr/local installiert ist, fehlt dieser Pfad in der Liste der Pfade für ausführbare Programme und muss deshalb hinzugefügt werden.

Wir bringen den neuen Pfad unserem Mac am leichtesten damit bei, dass wir eine "Startdatei" für unser Terminal anlegen, in dem der Pfad entsprechend erweitert wird.

nano ~/.bash_login
Das Tilde-Symbol bekommt man auf einer deutschen Tastatur mit Alt-n.

Damit geht ein einfacher Texteditor auf. Ganz ans Ende der Datei, falls sie schon Inhalt haben sollte, fügen wir folgende Zeile ein (schon mit dem Pfad für MySQL):

export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

Wir speichern die Datei mit Ctrl-O und verlassen nano mit Ctrl-X.

Jetzt muss nur noch unser schon gestartetes Terminal von den Veränderungen erfahren, also lesen wir die Startdatei neu ein:

. ~/.bash_login

Downloads

Wir laden jetzt erstmal alle Bestandteile unsere Ruby On Rails Systems herunter und packen sie aus:

curl -O ftp://ftp.gnu.org/gnu/readline/readline-5.2.tar.gz
tar zxf readline-5.2.tar.gz
curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz
tar zxf ruby-1.8.6.tar.gz
curl -O http://files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-0.9.0.tgz
tar zxf rubygems-0.9.0.tgz
curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
tar zxf fcgi-2.4.0.tar.gz
curl -O http://rubyforge.iasi.roedu.net/files/fcgi/ruby-fcgi-0.8.7.tar.gz
tar zxf ruby-fcgi-0.8.7.tar.gz
curl -O http://dl.ambiweb.de/mirrors/ftp.exim.org/pcre/pcre-7.0.tar.gz
tar zxf pcre-7.0.tar.gz
curl -O http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz
tar zxf lighttpd-1.4.13.tar.gz

Das gröbste haben wir jetzt beisammen.

Kompilieren und Installieren

Das kompilieren und installieren verläuft mit den heruntergeladenen Dateien vollkommen problemlos, darum hier in Kurzform Ruby und RubyGems:

cd readline-5.2
./configure --prefix=/usr/local
make
sudo make install
cd ..
cd ruby-1.8.6
./configure --prefix=/usr/local --with-readline-dir=/usr/local
make
sudo make install
sudo make install-doc
cd ..
cd rubygems-0.9.0
sudo /usr/local/bin/ruby setup.rb
cd ..

RubyGems ist ein Paketmanager ähnlich dem von Fink oder DarwinPorts. Es gibt zwar mittlerweile eine neuere Version, aber da die meisten Ruby-Anwendungen inklusive Rails 1.2.3 noch nicht an das neue gems angepasst sind, installieren wir die Vorversion um ständige Deprecation-Warnungen zu vermeiden. RubyGems benutzen wir jetzt um rake und die Rails-Pakete zu installieren:

sudo gem install rails --include-dependencies

Damit ist unser Rails System eigentlich fertig. Allerdings haben wir bisher nur webrick als Webserver, der die Web-Applikationen zur Verfügung stellt. Das beheben wir im folgenden:

cd fcgi-2.4.0
./configure --prefix=/usr/local
make
sudo make install
cd ..
cd ruby-fcgi-0.8.7
/usr/local/bin/ruby install.rb config --prefix=/usr/local
/usr/local/bin/ruby install.rb setup
sudo /usr/local/bin/ruby install.rb install
cd ..
sudo gem install fcgi
cd pcre-7.0
./configure --prefix=/usr/local
make
sudo make install
cd ..
cd lighttpd-1.4.13
./configure --prefix=/usr/local --with-pcre=/usr/local
make
sudo make install
cd ..

Damit ist lighttpd als Webserver installiert. Eine weitere Konfiguration ist nicht notwendig, Rails findet lighttpd wenn er installiert ist von alleine.

Der Datenbankserver

Einen Datenbankserver brauchen wir für unsere Web-Applikationen auch noch. Üblicherweise wird hier MySQL bevorzugt. Rails unterstützt so ziemlich jeden anderen Datenbankserver, allerdings bekommt man einige nette Features geschenkt, wenn man MySQL einsetzt.

Einen grafischen Installer für MySQL 5.0 findet man hier. Es reicht normalerweise das "Standard" Paket für die jeweilige Plattform. Nach dem Herunterladen und öffnen der Image-Datei installiert man die beiden im Image vorhandenen Pakete und das Kontrollfeld für die Systemeinstellungen.

Um die Leistungsfähigkeit der Datenbankanbindung zu erhöhen machen wir im Terminal noch folgendes:

sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

Fertig! Wir haben eine komplette Ruby On Rails Entwicklungsumgebung installiert.

Alternative Installation (One-Click Installer)

Einige nette Leute haben es sich zur Aufgabe gemacht, die aktuellste Ruby Version einfacher auf Mac OS X installierbar und so schneller nutzbar zu machen und damit den Rechner auf Rails vorzubereiten. Sie haben den Ruby One-Click Installer for OSX geschaffen. Und wie heißt es so schön auf der Seite: "If you've got something else, you are wasting time and hard disk space."

Es gibt zur Zeit 2 Versionen des Installers und das Dokumentations Package:

Enthalten sind (Stand 28.08.2007):

  • Ruby 1.8.6
  • SQLite 3.4.0
  • Mongrel 1.0.1 (+dependencies)
  • Ruby/LDAP 0.9.7
  • Ragel State Machine Compiler 5.22
  • Rubygems 0.9.4
  • Gem: sqlite3-ruby (1.2.1)
  • Gem: daemons (1.0.6)
  • Gem: rake (0.7.3)

Danach reicht ein

 sudo gem install rails --include-dependencies 

im Terminal und man kann mit Rails loslegen.

Ein klitzekleines Tutorial zum Loslegen

Damit man auch direkt sieht, was man installiert hat.

Erste Schritte

Nun wollen wir unser Ruby On Rails System auch einmal austesten. Dazu legen wir als erstes eine neue Web-Applikation an. Das ist recht bequem, weil uns Rails die komplette Arbeit abnimmt:

In einem beliebigen Terminal Fenster geben wir folgendes ein:

rails ~/meinewebapp

Damit erstellt uns Rails von ganz alleine eine neue Web-Applikation mit dem Namen meinewebapp und legt sie in einem Verzeichnis gleichen Namens ab. Weitere Konfigurationen sind nicht notwendig, das ist einer der großen Vorteile von Rails gegenüber anderen Applikations-Servern.

Um unsere (bisher leere) Web-Applikation laufen zu lassen, bedarf es nur noch folgendem:

cd ~/meinewebapp
ruby script/server

Wir wechseln also in das Verzeichnis mit der neuen Web-Applikation und starten das von Rails angelegte Server-Skript.

Das Ergebnis können wir uns jetzt unter http://0.0.0.0:3000 ansehen.

Gratulation! Unsere erste Ruby On Rails Applikation auf unserem eigenen Mac läuft.

Verweise

Kategorien
Tutorials, Webentwicklung

Zuletzt geändert am 06.09.2009 14:45 Uhr ( Besuche)

© 2004 – 2024 ApfelWiki

Impressum - Datenschutz

cb