83
1 Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434) RUBY ON RAILS Markus Knofe

RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

  • Upload
    hadien

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

1Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

RUBY ON RAILSMarkus Knofe

Page 2: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

Gliederunga) Was ist Railsb) MVC in Railsc) Rails praktischd) Fazit

2

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Page 3: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

3

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Rails ist innovativ !

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Page 4: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

4

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Rails ist innovativ !

Rails ist elegant !

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Page 5: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

5

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Rails ist innovativ !

Rails ist elegant !

Rails ist schnell !

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Page 6: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

6

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Rails ist innovativ !

Rails ist elegant !

Rails ist schnell !

Rails ist Produktivität !

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Page 7: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

7

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Rails ist innovativ !

Rails ist elegant !

Rails ist schnell !

Rails ist Produktivität !

Rails ist die Freude am Programmieren !

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Page 8: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

8

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Rails ist innovativ !

Rails ist elegant !

Rails ist schnell !

Rails ist Produktivität !

Rails ist die Freude am Programmieren !

Rails ist ein Hype!

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Page 9: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

9

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Rails ist innovativ !

Rails ist elegant !

Rails ist schnell !

Rails ist Produktivität !

Rails ist die Freude am Programmieren !

Ist Rails ein Hype?

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Page 10: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

10

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails?

Page 11: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

11

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 12: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

12

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 13: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

13

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis Eigenschaften

Ruby Beispiel 1: Klassen

Page 14: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

14

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis Eigenschaften

Ruby Beispiel 2: Dynamik

Ruby Beispiel 3: Lesbarkeit

Auf http://tryruby.hobix.com/ steht eine interaktive Ruby-Shell zum ausprobieren zur Verfügung.

Page 15: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

15

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis Eigenschaften

MVC-Architektur- Model-View-Controller Framework

- Saubere Trennung von Daten / Ansichten / Verarbeitung

- Leicht wartbar

Page 16: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

16

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 17: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

17

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 18: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

18

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 19: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

19

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 20: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

20

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 21: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

21

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis Eigenschaften

Enviroments- Möglichkeit zur Definition von Laufzeitumgebungen mit unterschiedlichen

Parametern, z.B. die verwendete Datenbank oder die Art des Loggings

Page 22: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

22

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 23: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

23

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis Eigenschaften

Enviroments- Möglichkeit zur Definition von Laufzeitumgebungen mit unterschiedlichen

Parametern, z.B. die verwendete Datenbank oder die Art des Loggings

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, …)

WEBrick- Out-of-the-Box Webserver (alternativ auch mit Apache und lighttpd verwendbar)

- Nur die Datenbank muss zusätzlich installiert werden

Page 24: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

24

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis Eigenschaften

Web 2.0- Ajax und SOAP Unterstützung im Framework integriert

Page 25: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

25

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 26: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

26

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails Rubybasis 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

Page 27: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

27

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

ModelViewController

in Rails

Page 28: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

28

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Model View Controller - Architekturmuster

- 1970 veröffentlicht und erste Anwendung in Smalltalk

- Vorwiegender Einsatz bei GUI-basierten Systemen

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Page 29: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

29

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Model View Controller - Architekturmuster

- 1970 veröffentlicht und erste Anwendung in Smalltalk

- Vorwiegender Einsatz bei GUI-basierten Systemen

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Model- Status des Systems

- Manipuliert den Status

Page 30: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

30

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Model View Controller - Architekturmuster

- 1970 veröffentlicht und erste Anwendung in Smalltalk

- Vorwiegender Einsatz bei GUI-basierten Systemen

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

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

Page 31: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

31

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Controller- Verbindet View und Model

- Steuert die Verarbeitung der Benutzerinteraktion

Page 32: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

32

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Controller

Vorteile

Nachteil- Enge Bindungen zwischen den einzelnen Objekten

- Verbindet View und Model

- Steuert die Verarbeitung der Benutzerinteraktion

- Keine Vermengung zwischen Programmcode und Ausgabeelementen

- Austauschbarkeit der Präsentationsschicht

- Direkte Reaktion auf Benutzerinteraktion

Page 33: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

33

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

MVC - Ablauf

View

Controller

ModelBenutzer interagiert mit View

Page 34: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

34

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

MVC - Ablauf

View

Controller

ModelBenutzer interagiert mit View

View stößt Controller an

Page 35: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

35

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

MVC - Ablauf

View

Controller

Model

View stößt Controller an

Benutzer interagiert mit View

Controller verändert Model

Page 36: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

36

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

MVC - Ablauf

View

Controller

Model

View stößt Controller an

Benutzer interagiert mit View

Controller verändert Model

Controller initialisiert ein

erneutes Rendern

Page 37: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

37

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

MVC - Ablauf

View

Controller

Model

View stößt Controller an

Benutzer interagiert mit View

Controller verändert Model

Controller initialisiert ein

erneutes Rendern

View wird mit den neuen Modeldaten gerendert

Page 38: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

38

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Problem der Benutzerinteraktion bei Webanwendungen- Webseiten ≠ direkte Interaktion

- Interaktion nur indirekt über URLs

Page 39: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

39

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 40: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

40

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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 == Methode und View

Page 41: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

41

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC – Ablauf in Rails

View

Controller

Model

URL: http://foo.bar/blog/show/42

MVC allgemein MVC in Rails Routing Model View Controller

ControllerController

ViewView

ModelModel

Router

Datenbank

Page 42: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

42

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC – Ablauf in Rails

View

Controller

Model

URL: http://foo.bar/blog/show/42

MVC allgemein MVC in Rails Routing Model View Controller

ControllerController

ViewView

ModelModel

Router

Controller: Blog > Method: Action > Id: 42

Datenbank

Page 43: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

43

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC – Ablauf in Rails

View

Controller

Model

URL: http://foo.bar/blog/show/42

MVC allgemein MVC in Rails Routing Model View Controller

ControllerController

ViewView

ModelModel

Router

Zugriff auf den Datensatz 42

Controller: Blog > Method: Action > Id: 42

Datenbank

Page 44: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

44

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC – Ablauf in Rails

View

Controller

Model

URL: http://foo.bar/blog/show/42

MVC allgemein MVC in Rails Routing Model View Controller

ControllerController

ViewView

ModelModel

Router

Zugriff auf den Datensatz 42

Rendern des show-Views für Datensatz 42

Controller: Blog > Method: Action > Id: 42

Datenbank

Page 45: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

45

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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:

Page 46: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

46

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Reverse Routing mit Rails- Verlinkung durch Reverse Routing (url_for() )

- Kontext sensitiv

Beispiel:

Page 47: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

47

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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 KonventionenTabellenname: news_items

Klasse: NewsItem

Pfad: app/models/news_item.rb

Page 48: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

48

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Abbildung von relationalen Datenbanken auf Klassen- ORM => Object Relation Mapping

- Rails generiert automatisch die notwendige Klasse

keine Konfiguration notwendig!

Code einer Modelklasse

Page 49: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

49

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 50: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

50

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 51: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

51

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Konsistenzerhaltung durch Model-Callbacks- Werden vor oder nach create, update oder delete aufgerufen

Konsistenzerhaltung durch „validate…“- 18 pre definierte Validatoren

- Durch überschreiben der Methoden kann die eigene Datenstruktur

konsistent gehalten werden

Page 52: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

52

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

View – Action View- Rails Template-System

- Für HTML und strukturierte Dokumente

- Templates, Layouts, Partials

- Helper

View KonventionenURL: http://.../blog/list

Template: app/views/blog/show[.rhtml | .rxml]

Helper: BlogHelper

Helper-Pfad: app/helpers/blog_helper.rb

Page 53: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

53

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 54: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

54

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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.

Page 55: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

55

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

RXML-Beispiel

Page 56: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

56

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 57: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

57

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 58: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

58

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 59: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

59

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

RHTML - Beispiel

Page 60: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

60

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Layouts- Ein Layout per Controller

- Auch manuell setzbar

Page 61: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

61

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Layouts- Ein Layout per Controller

- Auch manuell setzbar

Partial - Kapselung der Präsentation von Objekten

- DRY-Ansatz

- Partials beginnen mit einem _

Page 62: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

62

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 63: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

63

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 64: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

64

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Form/Field-Helper

Page 65: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

65

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Form/Field-Helper

Page 66: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

66

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Form/Field-Helper

Page 67: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

67

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Form/Field-Helper

Page 68: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

68

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Controller – Action Controller- Koordinator der Anwendung

- Methoden = Anwendungsfunktionen

- Enge Verknüpfung mit den Views

- Verwaltet Models und Umgebungsvarbiablen

Controller KonventionenURL: http://.../blog/list

Klasse: BlogController

Pfad: app/controller/blog_controller.rb

Methode: show()

Layout: app/views/layouts/blog.rhtml

Page 69: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

69

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Umgebungsvariablen- request : Aufrufsdaten

- params : Parameter des Aufrufs

- sessions : Aktuelle Sitzungsdaten

- cookies : Daten des Cookies

Page 70: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

70

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 71: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

71

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Methodendelegierung- Delegiert Arbeit auf bestehende Funktionalität (DRY)

- Sicherer als ein render(:template => “bar“)

Page 72: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

72

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model 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

Page 73: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

73

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Filter- Umschließen Methoden

- Zugriffsrechte, Logging, …

Page 74: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

74

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

MVC allgemein MVC in Rails Routing Model View Controller

Filter- Umschließen Methoden

- Zugriffsrechte, Logging, …

Verify bei Contollern- Filter mit automatisierter Methodendeklatarion

Page 75: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

75

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails + Generatoren

Page 76: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

76

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Die erste Railsanwendung1. Datenbank erzeugen

2. Eine Railsanwendung anlegen

3. Datenbankverbindung konfigurieren

4. Scaffold erzeugen

5. WEBrick starten

Testing1. Unit-Tests

2. Functional Tests

items

PK id

itemtypecontentdate

Page 77: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

77

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Rails = Hype ?

Page 78: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

78

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

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

Page 79: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

79

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

0 5000 10000 15000

J2EE .Net Rails

- 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

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Vorteile

Page 80: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

80

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Nachteile- Interpretersprache langsamer als J2EE / asp.Net

- Wenige Webhosts

- Wenig Kontrolle

- Überladene API-Dokumentation (http://api.rubyonrails.org/)

Page 81: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

81

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

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

Page 82: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

82

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Fragen ?

Page 83: RUBY ON RAILS - fh-wedel.desi/seminare/ws06/Ausarbeitung/06.RubyOnRails/R… · Gliederung a) Was ist Rails b) MVC in Rails c) Rails praktisch d) Fazit 2 15.11.2006 Informatik-Seminar

83

15.11.2006

Informatik-Seminar WS 06/07 – Ruby on Rails - Markus Knofe (minf2434)

Einleitung Was ist Rails? MVC in Rails Rails praktisch Fazit

Vielen Dank !