Was ist Rails?

Werbung
RUBY ON RAILS
Markus Knofe
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
1
Einleitung
Was ist Rails? MVC in Rails
Rails praktisch
Fazit
15.11.2006
Gliederung
a) Was ist Rails
b) MVC in Rails
c) Rails praktisch
d) Fazit
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
2
Einleitung
Was ist Rails?
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Rails ist innovativ !
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
3
Einleitung
Was ist Rails?
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Rails ist innovativ !
Rails ist elegant !
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
4
Einleitung
Was ist Rails?
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Rails ist innovativ !
Rails ist elegant !
Rails ist schnell !
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
5
Einleitung
Was ist Rails?
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Rails ist innovativ !
Rails ist elegant !
Rails ist schnell !
Rails ist Produktivität !
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
6
Einleitung
Was ist Rails?
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Rails ist innovativ !
Rails ist elegant !
Rails ist schnell !
Rails ist Produktivität !
Rails ist die Freude am Programmieren !
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
7
Einleitung
Was ist Rails?
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Rails ist innovativ !
Rails ist elegant !
Rails ist schnell !
Rails ist Produktivität !
Rails ist die Freude am Programmieren !
Rails ist ein Hype!
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
8
Einleitung
Was ist Rails?
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Rails ist innovativ !
Rails ist elegant !
Rails ist schnell !
Rails ist Produktivität !
Rails ist die Freude am Programmieren !
Ist Rails ein Hype?
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
9
Einleitung
Was ist Rails?
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Rails?
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
10
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Was ist Rails?
- Entwickelt von David Heinemeier Hansson (37signals)
- Framework für Datenbank gestützte Webanwendungen
- Eine Extraktion aus einer bestehenden Anwendung (basecamphq.com)
- Low-Level-Funktionalitäten bereits vorhanden
- Leicht wartbar
- Open-Source
- Eine wachsende Community
- Komplett in Ruby geschrieben
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
11
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Ruby Entwicklung
- 1993 entwickelt von Yukihiro Matsoumoto
- Motivation: Frust durch inkonsistente Sprachen
- 1995 fertig gestellt und unter GPL verfügbar
- seit 2000 auch außerhalb von Japan bekannt
Ruby Eigenschaften
- Syntax u.a. an Eifel und C++ angelehnt
- Interpretersprache
- Komplett objektorientiert (wie z.B. Smalltalk)
- Dynamisch typisiert
- Folgt dem Prinzip der geringsten Überraschung
- Durch JRuby in Java integrierbar
- Java-Klassen durch JRuby in Ruby nutzbar
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
12
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Ruby Beispiel 1: Klassen
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
13
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Ruby Beispiel 2: Dynamik
Ruby Beispiel 3: Lesbarkeit
Auf http://tryruby.hobix.com/ steht eine interaktive Ruby-Shell zum ausprobieren zur Verfügung.
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
14
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
MVC-Architektur
- Model-View-Controller Framework
- Saubere Trennung von Daten / Ansichten / Verarbeitung
- Leicht wartbar
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
15
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
MVC-Architektur
- Model-View-Controller Framework
- Saubere Trennung von Daten / Ansichten / Verarbeitung
- Leicht wartbar
Object Relational Mapping
- Verhindert Programmierstieldifferenzen beim Arbeiten mit relationalen
Datenbanken in OO-Umgebungen
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
16
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
MVC-Architektur
- Model-View-Controller Framework
- Saubere Trennung von Daten / Ansichten / Verarbeitung
- Leicht wartbar
Object Relational Mapping
- Verhindert Programmierstieldifferenzen beim Arbeiten mit relationalen
Datenbanken in OO-Umgebungen
Create Read Update Delete - Funktionalität
- Bereitstellung der Low-Level-Datenoperationen
- Automatische Generierung mittels Scaffolding
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
17
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
„Covention over Configuration“
- Automatisches Konfiguration durch Namenskonventionen
- Sinnvolle Default-Werte
- Definierte Verzeichnisstruktur
- Konfiguration nur für die Datenbankanbindung notwendig, bzw.
bei Abweichung von der Namenskonvention
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
18
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
„Covention over Configuration“
- Automatisches Konfiguration durch Namenskonventionen
- Sinnvolle Default-Werte
- Definierte Verzeichnisstruktur
- Konfiguration nur für die Datenbankanbindung notwendig, bzw.
bei Abweichung von der Namenskonvention
DRY – „Don‘t Repeat Yourself“
- Verhinderung von Redundanz im Programm mittels Helpern
- Automatisches Anpassen der Datenmodelle bei Änderung der Datenbank
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
19
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
„Covention over Configuration“
- Automatisches Konfiguration durch Namenskonventionen
- Sinnvolle Default-Werte
- Definierte Verzeichnisstruktur
- Konfiguration nur für die Datenbankanbindung notwendig, bzw.
bei Abweichung von der Namenskonvention
DRY – „Don‘t Repeat Yourself“
- Verhinderung von Redundanz im Programm mittels Helpern
- Automatisches Anpassen der Datenmodelle bei Änderung der Datenbank
Datenbankmigration
- „on-the-fly-Wechsel“ des DBMS möglich
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
20
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Enviroments
- Möglichkeit zur Definition von Laufzeitumgebungen mit unterschiedlichen
Parametern, z.B. die verwendete Datenbank oder die Art des Loggings
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
21
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Enviroments
- Möglichkeit zur Definition von Laufzeitumgebungen mit unterschiedlichen
Parametern, z.B. die verwendete Datenbank oder die Art des Loggings
WEBrick
- Out-of-the-Box Webserver (alternativ auch mit Apache und lighttpd verwendbar)
- Nur die Datenbank muss zusätzlich installiert werden
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
22
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Enviroments
- Möglichkeit zur Definition von Laufzeitumgebungen mit unterschiedlichen
Parametern, z.B. die verwendete Datenbank oder die Art des Loggings
WEBrick
- Out-of-the-Box Webserver (alternativ auch mit Apache und lighttpd verwendbar)
- Nur die Datenbank muss zusätzlich installiert werden
Generatoren
- Generatoren erzeugen automatisch die benötigte Datenstruktur, sowie
Default-Code (für Model, Controller, Scaffolding)
- Integration von Generatoren aus der Community zur Generierung
speziellerer Objekte (z.B. Login, Newsfeed, …)
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
23
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Web 2.0
- Ajax und SOAP Unterstützung im Framework integriert
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
24
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Web 2.0
- Ajax und SOAP Unterstützung im Framework integriert
Modularisierung
- Rails besteht aus fünf Modulen
- Weitere Module können integriert werden
z.B. Bezahlsysteme für Shops
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
25
Einleitung
Was ist Rails?
Rails
Rubybasis
MVC in Rails
Rails praktisch
Fazit
15.11.2006
Eigenschaften
Web 2.0
- Ajax und SOAP Unterstützung im Framework integriert
Modularisierung
- Rails besteht aus fünf Modulen
- Weitere Module können integriert werden
z.B. Bezahlsysteme für Shops
TestDrivenDevelopment
- Rails kommt mit einer kompletten Testsuite
- Alle Schichten der MVC-Architektur können getestet werden
- Profiling
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
26
Einleitung Was ist Rails?
MVC in Rails
Rails praktisch
Fazit
15.11.2006
ModelViewController
in Rails
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
27
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Model View Controller
- Architekturmuster
- 1970 veröffentlicht und erste Anwendung in Smalltalk
- Vorwiegender Einsatz bei GUI-basierten Systemen
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
28
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Model View Controller
- Architekturmuster
- 1970 veröffentlicht und erste Anwendung in Smalltalk
- Vorwiegender Einsatz bei GUI-basierten Systemen
Model
- Status des Systems
- Manipuliert den Status
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
29
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Model View Controller
- Architekturmuster
- 1970 veröffentlicht und erste Anwendung in Smalltalk
- Vorwiegender Einsatz bei GUI-basierten Systemen
Model
- Status des Systems
- Manipuliert den Status
View
- Visualisierung
- Interaktion mit Benutzer
- Mehrere Views möglich
- Ein View ist immer an ein konkretes Model gebunden
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
30
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Controller
- Verbindet View und Model
- Steuert die Verarbeitung der Benutzerinteraktion
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
31
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Controller
- Verbindet View und Model
- Steuert die Verarbeitung der Benutzerinteraktion
Vorteile
- Keine Vermengung zwischen Programmcode und Ausgabeelementen
- Austauschbarkeit der Präsentationsschicht
- Direkte Reaktion auf Benutzerinteraktion
Nachteil
- Enge Bindungen zwischen den einzelnen Objekten
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
32
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
MVC - Ablauf
Controller
View
Model
Benutzer interagiert mit View
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
33
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
MVC - Ablauf
Controller
View stößt Controller an
View
Model
Benutzer interagiert mit View
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
34
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
MVC - Ablauf
Controller
View stößt Controller an
View
Controller verändert Model
Model
Benutzer interagiert mit View
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
35
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
MVC - Ablauf
Controller
View stößt Controller an
Controller verändert Model
Controller initialisiert ein
erneutes Rendern
View
Model
Benutzer interagiert mit View
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
36
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
MVC - Ablauf
Controller
View stößt Controller an
Controller verändert Model
Controller initialisiert ein
erneutes Rendern
View
Benutzer interagiert mit View
View wird mit den neuen Modeldaten gerendert
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
Model
37
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Problem der Benutzerinteraktion bei Webanwendungen
- Webseiten ≠ direkte Interaktion
- Interaktion nur indirekt über URLs
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
38
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Problem der Benutzerinteraktion bei Webanwendungen
- Webseiten ≠ direkte Interaktion
- Interaktion nur indirekt über URLs
Problemlösung: Erweiterung um eine vorschaltete Instanz
- Analyse der URLs
- Auslösen von Events
ÎMVC Version 2.0
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
39
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Rails MVC Architektur
- Jede URL wird vom Router der Anwendung auf die gewünschte Methode
des angegeben Controllers gemappt
- Datenbanktabelle == Model
- Funktionsgruppe == Controller
- Funktion
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
== Methode und View
40
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
MVC – Ablauf in Rails
URL: http://foo.bar/blog/show/42
Router
Controller
Controller
Controller
Model
Model
Model
View
View
View
Datenbank
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
41
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
MVC – Ablauf in Rails
URL: http://foo.bar/blog/show/42
Controller: Blog > Method: Action > Id: 42
Router
Controller
Controller
Controller
Model
Model
Model
View
View
View
Datenbank
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
42
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
MVC – Ablauf in Rails
URL: http://foo.bar/blog/show/42
Controller: Blog > Method: Action > Id: 42
Router
Controller
Controller
Controller
Zugriff auf den Datensatz 42
Model
Model
Model
View
View
View
Datenbank
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
43
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
MVC – Ablauf in Rails
URL: http://foo.bar/blog/show/42
Controller: Blog > Method: Action > Id: 42
Controller
Controller
Controller
Router
Zugriff auf den Datensatz 42
Model
Model
Model
View
View
View
Rendern des show-Views für
Datensatz 42
Datenbank
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
44
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Routing mit Rails
- Routingregeln in config/routes.rb festgelegt
- Priorität festgelegt durch Reinfolge
- Nicht regelkonforme URL werden auf Fehlerseiten umgeleitet
oder können abgefangen werden (catchall)
Beispiel:
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
45
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Reverse Routing mit Rails
- Verlinkung durch Reverse Routing (url_for() )
- Kontext sensitiv
Beispiel:
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
46
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
15.11.2006
Fazit
View Controller
Model – Active Record (AR)
- Eine Model-Klasse
==
Eine Tabelle der Datenbank
- Ein Model-Klassen-Objekt
==
Ein Datensatz
- Ein Objekt-Attribut
==
Eine Spalte der Tabelle
- Es werden KEINE SQL-Kenntisse benötigt
Model Konventionen
Tabellenname:
news_items
Klasse:
NewsItem
Pfad:
app/models/news_item.rb
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
47
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Abbildung von relationalen Datenbanken auf Klassen
- ORM => Object Relation Mapping
- Rails generiert automatisch die notwendige Klasse
Æ keine Konfiguration notwendig!
Code einer Modelklasse
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
48
MVC in Rails
Einleitung Was ist Rails?
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Kein SQL notwendig?
- CRUD = Create, Read, Update, Delete
- Active Record stellt CRUD bereit
- Die Operationen sind Bestandteil jeder von AR erbenden Klasse
- Bereitstellung dynamischer Suchfunktionen
Beispiele
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
49
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Abhängigkeiten zwischen Tabellen modellieren
- Erkennung nicht durch AR automatisiert
- Spezielle Spalte in DB-Tabelle erforderlich: parent_id
- AR stellt jedoch passende Funktionalität
- 1 : 1, 1 : n, m : n
Definition der Abhängigkeiten
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
50
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Konsistenzerhaltung durch „validate…“
- 18 pre definierte Validatoren
- Durch überschreiben der Methoden kann die eigene Datenstruktur
konsistent gehalten werden
Konsistenzerhaltung durch Model-Callbacks
- Werden vor oder nach create, update oder delete aufgerufen
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
51
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
View – Action View
- Rails Template-System
- Für HTML und strukturierte Dokumente
- Templates, Layouts, Partials
- Helper
View Konventionen
URL:
http://.../blog/list
Template:
app/views/blog/show[.rhtml | .rxml]
Helper:
BlogHelper
Helper-Pfad:
app/helpers/blog_helper.rb
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
52
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Action View Umgebung
- Zugriff auf alle Insantzvariablen (@varname) des Controllers:
session, params, response, request, headers, sowie eigene
- Zusätzliche Variable controller mit Referenz auf das Controller-Objekt
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
53
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Action View Umgebung
- Zugriff auf alle Insantzvariablen (@varname) des Controllers:
session, params, response, request, headers, sowie eigene
- Zusätzliche Variable controller mit Referenz auf das Controller-Objekt
Buildertemplates
- Erzeugen strukturierte Text, z.B. XML
- Dateinendung .rxml
- Verwendet die Ruby Bibliothek Builder
- Support von: namespace, entities, processing instructions, usw.
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
54
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
RXML-Beispiel
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
55
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
RHTML - Templates
- Buildertemplates nicht für HTML geeignet
- Besser: RHTML = HTML + inline Ruby
- RHTML wird in ein Rubyscript umgewandelt und ausgeführt
- Syntax an JSP angelehnt
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
56
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
RHTML - Templates
- Buildertemplates nicht für HTML geeignet
- Besser: RHTML = HTML + inline Ruby
- RHTML wird in ein Rubyscript umgewandelt und ausgeführt
- Syntax an JSP angelehnt
Inline-Ruby: <%= … %>
- Eingeschlossener Code wird ausgewertet
- Zu einem String konvertiert
- Ausgegeben
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
57
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
RHTML - Templates
- Buildertemplates nicht für HTML geeignet
- Besser: RHTML = HTML + inline Ruby
- RHTML wird in ein Rubyscript umgewandelt und ausgeführt
- Syntax an JSP angelehnt
Inline-Ruby: <%= … %>
- Eingeschlossener Code wird ausgewertet
- Zu einem String konvertiert
- Ausgegeben
Inline-Ruby: <% … %>
- Eingeschlossener Code wird nur ausgewertet
- Auch über mehrere Tags
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
58
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
RHTML - Beispiel
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
59
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Layouts
- Ein Layout per Controller
- Auch manuell setzbar
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
60
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Layouts
- Ein Layout per Controller
- Auch manuell setzbar
Partial
- Kapselung der Präsentation von Objekten
- DRY-Ansatz
- Partials beginnen mit einem _
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
61
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Template Helper
- Helper == logische Konsequenz von DRY
- Format- und Form-Helper
- eigene problemspezifische Helper definierbar
- Wichtigster Helper: h
- Können auch in beliebige Controller eingebunden werden
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
62
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Template Helper
- Helper == logische Konsequenz von DRY
- Format- und Form-Helper
- eigene problemspezifische Helper definierbar
- Wichtigster Helper: h
- Können auch in beliebige Controller eingebunden werden
Format-Helper
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
63
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Form/Field-Helper
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
64
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Form/Field-Helper
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
65
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Form/Field-Helper
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
66
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Form/Field-Helper
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
67
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Controller – Action Controller
- Koordinator der Anwendung
- Methoden = Anwendungsfunktionen
- Enge Verknüpfung mit den Views
- Verwaltet Models und Umgebungsvarbiablen
Controller Konventionen
URL:
http://.../blog/list
Klasse:
BlogController
Pfad:
app/controller/blog_controller.rb
Methode:
show()
Layout:
app/views/layouts/blog.rhtml
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
68
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Umgebungsvariablen
- request
: Aufrufsdaten
- params
: Parameter des Aufrufs
- sessions : Aktuelle Sitzungsdaten
- cookies
: Daten des Cookies
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
69
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Umgebungsvariablen
- request
: Aufrufsdaten
- params
: Parameter des Aufrufs
- sessions : Aktuelle Sitzungsdaten
- cookies
: Daten des Cookies
render()
- Dient dem Rendern eines bestimmten Outputs
- :inline
- :partial
- :template
- :text
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
70
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Methodendelegierung
- Delegiert Arbeit auf bestehende Funktionalität (DRY)
- Sicherer als ein render(:template => “bar“)
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
71
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Methodendelegierung
- Delegiert Arbeit auf bestehende Funktionalität (DRY)
- Sicherer als ein render(:template => “bar“)
Flash
- Kommunikation über den Controller hinaus
- Request gebunden
- Session
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
72
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Filter
- Umschließen Methoden
- Zugriffsrechte, Logging, …
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
73
Einleitung Was ist Rails?
MVC in Rails
MVC allgemein
MVC in Rails
Rails praktisch
Routing
Model
Fazit
15.11.2006
View Controller
Filter
- Umschließen Methoden
- Zugriffsrechte, Logging, …
Verify bei Contollern
- Filter mit automatisierter Methodendeklatarion
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
74
Einleitung Was ist Rails? MVC in Rails
Rails praktisch
Fazit
15.11.2006
Rails + Generatoren
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
75
Einleitung Was ist Rails? MVC in Rails
Rails praktisch
15.11.2006
Fazit
Die erste Railsanwendung
1. Datenbank erzeugen
2. Eine Railsanwendung anlegen
items
PK
id
3. Datenbankverbindung konfigurieren
4. Scaffold erzeugen
5. WEBrick starten
itemtype
content
date
Testing
1. Unit-Tests
2. Functional Tests
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
76
Einleitung Was ist Rails? MVC in Rails Rails praktisch
Fazit
15.11.2006
Rails = Hype ?
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
77
Einleitung Was ist Rails? MVC in Rails Rails praktisch
Fazit
15.11.2006
Vorteile
- Wenig LOC als vergleichbare Javaanwendungen
- Echte OO im Gegensatz zu PHP
- Einfachheit
- Nicht im Labor entstanden
- Schnell sichtbare Erfolge
- Fast Prototyping
- Guter Code wird häufig kopiert: Grails, cakePHP, Biscuit, Monorail, …
- Open Source und eine schnell wachsende Community
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
78
Einleitung Was ist Rails? MVC in Rails Rails praktisch
Fazit
15.11.2006
Vorteile
- Wenig LOC als vergleichbare Javaanwendungen
- Echte OO im Gegensatz zu PHP
- Einfachheit
- Nicht im Labor entstanden
- Schnell sichtbare Erfolge
- Fast Prototyping
- Guter Code wird häufig kopiert: Grails, cakePHP, Biscuit, Monorail, …
- Open Source und eine schnell wachsende Community
LOC-Beispiel - Petstore
J2EE
0
5000
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
.Net
Rails
10000
15000
79
Einleitung Was ist Rails? MVC in Rails Rails praktisch
Fazit
15.11.2006
Nachteile
- Interpretersprache Î langsamer als J2EE / asp.Net
- Wenige Webhosts
- Wenig Kontrolle
- Überladene API-Dokumentation (http://api.rubyonrails.org/)
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
80
Einleitung Was ist Rails? MVC in Rails Rails praktisch
Fazit
15.11.2006
Nachteile
- Interpretersprache Î langsamer als J2EE / asp.Net
- Wenige Webhosts
- Wenig Kontrolle
- Überladene API-Dokumentation (http://api.rubyonrails.org/)
Ausblick – Rails 1.2 / Ruby 2.0
- REST-Support (Web Service)
- Ein Controller für unterschiedliche Clients (z.B. Mobile, Browser, …)
- Active Ressource (Verwenden von Webservices in Railsmanier)
- Ruby-VM (Yarv-Projekt)
- Ruby-Bytecode-Format
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
81
Einleitung Was ist Rails? MVC in Rails Rails praktisch
Fazit
15.11.2006
Fragen ?
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
82
Einleitung Was ist Rails? MVC in Rails Rails praktisch
Fazit
15.11.2006
Vielen Dank !
Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)
83
Herunterladen