Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen URL eingegangen. Es wird vorausgesetzt, dass die Bezeichnungen der Fenster von InstantRails 1.7 bekannt sind. Leere Anwung datum anlegen Als erstes legen wir eine leere Applikation mit Namen datum an. Wenn InstantRails noch nicht läuft, starten wir es und öffnen dann aus dem InstantRails Fenster heraus ein Ruby Console Fenster. Dort geben wir ein: rails datum und warten ab, bis die Verzeichnisstruktur angelegt ist. Im zweiten Schritt legen wir einen Controller und eine view zur Anwung an. Rails arbeitet mit der MVC Architektur, bei den Anwungen werden daher: Modell (model) Präsentation, Sicht (view) Steuerung (controller) in getrennten Komponenten beschrieben. Die Steuerung verwaltet die Sicht(en), nimmt von ihnen Benutzeraktionen entgegen, wertet diese aus und agiert entsprech. Insbesondere stellt er den Sichten die notwigen Daten zur Verfügung. Zum anlegen des Controllers wechseln wir zunächst in das Wurzelverzeichnis der Anwung, also in: C:\Programme\InstantRails\rails_apps\datum und erzeugen mit: ruby./script/generate controller datum index die notwigen Verzeichnisse und Dateien, darunter insbesondere:
Die Controller-Datei: app\controllers\datum_controller.rb Die views-datei: app\views\datum\index.rhtml In der Controller-Datei finden wir als Inhalt: class DatumController < ApplicationController und ändern ihn in: class DatumController < ApplicationController @sekunden = Time.now.to_i Die Wertzuweisung: @sekunden = Time.now.to_i legt in der Variablen @sekunden die Zahl der Sekunden seit dem 1.1.1970 0 Uhr 0:0 ab (Unix-Epoche). Der Controller stellt diesen Wert der view index zur Verfügung, die man in der oben angegebenen views-datei findet. In der views-datei finden wir den Inhalt: <h1>datum#index</h1> <p>find me in app/views/datum/index.rhtml</p> Views-Dateien sind das, was man in anderen Zusammenhängen als Templates bezeichnet, neben einem HTML-Rahmen können sie insbesondere auch Variablen umfassen, die dann in der Form: <%= @variablenname %> angegeben werden. Wie man sieht, kommt eine Variable @sekunden in der views-datei index.html nicht vor. Wir ändern den Inhalt daher in: <h1>unix-zeit</h1> <p>in der Unix-Epoche sind <%= @sekunden %> Sekunden verstrichen.</p>
Anwung mit Browser aufrufen Die Anwung datum ist nun soweit fertig, dass wir sie mit dem Browser aufrufen können. Öffnen Sie zuvor bitte noch das Rails Application Fenster, markieren dort die Anwung Datum und starten Sie diese Anwung mit dem Mongrel-Server. Dieser wird auf Port 3000 lauschen, sofern Sie nicht mehrere Instanzen davon laufen haben und keine anders lauten Angaben gemacht haben. Wenn Sie im Browser nun die URL: http://localhost:3000/datum/index aufrufen, werden Sie die Anzahl der verstrichenen Sekunden in der Unix- Epoche sehen können. Mehrere Views Bisher haben wir in der Anwung datum einen Controller und eine View verwet. Datum und Zeit kann man aber verschieden ausgeben und wir wollen deshalb verschiedene Views anlegen. Den Controller ändern wir dazu wie folgt: class DatumController < ApplicationController def datum @datum = Time.now @sekunden = Time.now.to_i def zeitzone zeit = Time.now @lokal = zeit.getlocal @green = zeit.getgm Wir haben den Controller für drei Views aufbereitet, bezeichnet mit datum, index und zeitzone. Wir brauchen daher auch drei views-dateien. datum.rhtml: <h1>datum</h1> <p>datum <%= @datum %></p> index.rhtml:
<h1>unix-zeit</h1><p>in der Unix-Epoche sind <%= @sekunden %> Sekunden verstrichen.</p> zeitzone.rhtml: <h1>datum</h1> <p> Datum Grenwhich: <%= @green %><br /> Datum Hamburg: <%= @lokal %></p> Diese drei Views kann man nun mit den URLs: http://localhost:3000/datum/datum http://localhost:3000/datum/index http://localhost:3000/datum/zeitzone aufrufen. Anmerkung: Prinzipiell kann man diese Arbeiten mit dem Windows-Editor ausführen, Spass macht das aber nicht. Brauchbar und kostenlos ist der ConTEXT Editor von http://www.context.cx. Mehrere Controller Es ist möglich für eine Anwung mehrere Controller zu verwen. Wir legen im app/controllers Unterverzeichnis der Anwung datum jetzt (am einfachsten mit einem Editor) noch eine Datei an mit Namen stime_controller.rb und Inhalt: class StimeController < ApplicationController stime = Time.local(2005,"may",25,15,45,0).to_i @sekunden = Time.now.to_i stime Dieser Controller stellt den Wert der Variablen @sekunden für eine View mit Namen index zur Verfügung, die in der Datei: app\views\stime\index.rhtml erwartet wird. Der Inhalt sei:
<h1>s-zeit</h1> <p>in der s-epoche sind <%= @sekunden %> Sekunden verstrichen.</p> Der Browser-Aufruf dieser View erfolgt dann mit: http://localhost:3000/stime/datum Zusammenfassung Bisher haben wir nur den Mongrel Web-Server benutzt, welche Anwungen damit verfügbar sind, haben wir im Rails Applications Fenster angegeben, verschiedene Anwungen werden dabei über verschiedene Port-Nummern unterschieden. Zu jeder Anwung gibt es einen oder mehrere Controller. Die Controller- Dateien sind ruby-quelldateien, die man im Unterverzeichnis: app/controllers der Anwung findet. In den Controller Dateien werden Werte für Views zur Verfügung gestellt. Die Views werden dabei mit View-Namen bezeichnet, sie werden jeweils in der Datei: app/views/controllername/viewname.rhtml erwartet. Der Browser-Aufruf einer View erfolgt mit der URL: http://localhost:anwungs-port/controllername/viewname