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