web-frameworks: ruby on rails - wi1.uni- · pdf fileweb-frameworks: ruby on rails thomas...
TRANSCRIPT
![Page 1: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/1.jpg)
Web-Frameworks:Ruby on Railsy
Thomas Jansing
05. Januar 2009
Software-Engineering Seminar (WS 2008/2009)
![Page 2: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/2.jpg)
Agenda
Web-Frameworks
Ruby on Rails
Live-Demo
Erweiterungen
Fazit
1
![Page 3: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/3.jpg)
Agenda
Web-Frameworks
Ruby on Rails
Live-Demo
Erweiterungen
Fazit
2
![Page 4: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/4.jpg)
Web-Anwendungen
Wer hat „Enterprise Application Integration“ gehört?
Bedeutung von Web-Anwendungen: Bekannt
Problem bei Web-Anwendungen: Heterogenität P i /Sk i t hProgrammier-/Skriptsprachen
Datenbanken
Web-ServerWeb Server
Betriebssysteme/Plattformen
Ziel von Web-Frameworks: Erstellen von Web-Anwendungen vereinfachen
3
Kombination von Komponenten zu einer Entwicklungsumgebung
![Page 5: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/5.jpg)
Web-Frameworks
Beispiele für Web-FrameworksNET.NET
DotNetNuke, ...
JAVAStruts, MyFaces, ...
Perl/PHPCatalyst, Symfony, ...
PythonDjangoDjango, ...
Und sonst?
4
![Page 6: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/6.jpg)
Web-Frameworks
Ruby on Rails
Web-Framework: Rails
Programmier-/Skriptsprache: Ruby
5
![Page 7: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/7.jpg)
Allgemeine Konzepte & Paradigmen
Rapid Application Development (RAD)
R id W b D l t & R id P t t i Rapid Web Development & Rapid PrototypingAnforderungen möglichst schnell in ausführbaren Code umsetzen
Extreme Programming (XP)Problemlösung steht im VordergrundProblemlösung steht im Vordergrund
Kleine iterative Schritte mit Rückkopplung
Test-driven development (TDD)Tests werden vor der eigentlichen Implementierung geschrieben
Agile Softwareentwicklung
6
![Page 8: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/8.jpg)
Allgemeine Konzepte & Paradigmen
Model-View-Controller (MVC) Architekturmuster
TrennungDatenmodel (Model)Datenmodel (Model)
Präsentationsschicht (View)
Steuerungsschicht (Controller)
Ziel: Web-Anwendung flexibel gestaltenWiederverwendungWiederverwendung
Geringerer Pflegeaufwand
Geprüfte und stabile Software
7
![Page 9: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/9.jpg)
Agenda
Web-Frameworks
Ruby on Rails
Live-Demo
Erweiterungen
Fazit
8
![Page 10: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/10.jpg)
Ruby
1995 von Yukihiro Matsumoto entwickelt
Obj kt i ti t P i /Sk i t hObjekt-orientierte Programmier-/Skriptsprache
Unterstützung für Prozedurale und Funktionale ProgrammierungProgrammierung
Dynamische Typisierung während der Laufzeit (Duck-Typing)(Duck-Typing)
„Principle of least surprise“
Syntax orientiert sich stark an natürlicher menschlicherSyntax orientiert sich stark an natürlicher menschlicher Sprache
Klassen Methoden (Java) Modelle Aktionen (Ruby)Klassen, Methoden (Java) Modelle, Aktionen (Ruby)
9
![Page 11: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/11.jpg)
Ruby - Beispiel Modell: UserErbt von der ActiveRecord Basis-Klasse
class User < ActiveRecord::Base
d f lf th ti t (l i d)def self.authenticate(login,password)
user = self.find_by_login(login)
ifif user
if user.password != passwordUser-Objekt gefunden?Aktion
user = nil
end
end
user User-Objekt wird zurückgegeben
end
end
10
![Page 12: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/12.jpg)
Rails
Von David Heinemeier Hansson entwickeltMitte 2004 Erste öffentliche VersionMitte 2004: Erste öffentliche Version
Ende 2005: Version 1.0
Ende 2007: Version 2.0Ende 2007: Version 2.0
Open Source Web-Framework (MIT-Lizenz)
PraxisnahPraxisnahBasiert auf Code & Erfahrungen bei der Entwicklung einer Projektmanagement Web-Plattform (basecamphq.com)
„Konvention über Konfiguration“Namenskonventionen vermeiden Konfigurationsaufwand
DRY P i i ( D ´ lf“)DRY-Prinzip („Don´t repeat yourself“)Vermeidung von Redundanz
11
![Page 13: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/13.jpg)
Rails
Meta ProgrammierungA tomatische Generier ng on Programmcode ScaffoldingAutomatische Generierung von Programmcode Scaffolding
CRUD-Funktionalität der Modelle
Modelle, Views, Controller und Tests
Objekt-relationes Mapping (ORM)Konfigurationsaufwand sehr gering
DB-Migrationen Versionierung der DB-Schemata möglich
3 UmgebungenDevelopment
Test
ProductionProduction
12
![Page 14: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/14.jpg)
Aufbau von Rails
13
![Page 15: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/15.jpg)
Wozu Rails?
Rapid PrototypingZiel a Ent ickl ngsda er/Kosten red ierenZiel: u. a. Entwicklungsdauer/Kosten reduzieren
Wodurch? -> Agilität und Flexibilität
Fokus auf Implementierung der Geschäftslogik
kürzere Entwicklungs-Zyklen
Feedback der Nutzer soll schneller in die Entwicklung einfließen
14
![Page 16: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/16.jpg)
Produktiver Einsatz
Wer setzt Ruby on Rails produktiv ein?
XING.com
Qype.com
Eins.de
Viele mehr...
15
![Page 17: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/17.jpg)
XING.com
16
![Page 18: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/18.jpg)
Qype.com
17
![Page 19: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/19.jpg)
Eins.de
18
![Page 20: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/20.jpg)
Produktiver Einsatz
Gemeinsamkeiten?
Web2.0/AJAX
Viel dynamischer Inhalt
Große „Marktplätze“
19
![Page 21: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/21.jpg)
Agenda
Web-Frameworks
Ruby on Rails
Live-Demo
Erweiterungen
Fazit
20
![Page 22: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/22.jpg)
Rails
EntwicklungsumgebungOS Windo s Vista 32 bitOS: Windows Vista 32-bit
Datenbank: SQLite 3 (Ver. 3.6.4)
Ruby (Ver. 1.8.6-27 RC1)Ruby (Ver. 1.8.6 27 RC1)
Ruby-Gems (Paketverwaltung)Rails 2.1.1
SQLite3 Adapter 1.2.3
Mongrel Web-Server 1.1.5
Konfiguration?
Nicht notwendig!
21
![Page 23: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/23.jpg)
Rails
Beispielanwendung: Pizza-Bestell-ServiceAdmin Pi a Ver alt ng (Anlegen Editieren Löschen)Admin Pizza-Verwaltung (Anlegen, Editieren, Löschen)
Kunde Bestellung (Anlegen)
Unterscheidung Admin, Kunde über Login-Funktionalität (Profil)Unterscheidung Admin, Kunde über Login Funktionalität (Profil)
Was erleichtert die Bestellung? Eine Pizza-Suche
Grundgedanke: Rapid Web Development!g p p(Anforderungen möglichst schnell in ausführbaren Code umsetzen)
Was wird benötigt?Modelle (Klassen)
Attribute
Assoziationen (Relationen) zwischen ModellenAssoziationen (Relationen) zwischen Modellen
UML Diagramm
22
g
![Page 24: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/24.jpg)
UML Diagramm
Orders_Pizzas
+name : string
Pizza
+delivery wish : text
Order+name : string+address : string+zip code : integer
User
1** *+name : string+price : decimal+ingredients : string
+delivery_wish : text p_ g+city : string+login : string+password : string
23
![Page 25: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/25.jpg)
Live-Demo
1. Rails-Projekt erstellen“rails pizza-service”
2. Modell generieren“ruby script\generate scaffold modellname attribut:typ ...”
3. DB migrieren“rake db:migrate”
4 Testen 4. Testen “ruby script\server”
http://localhost:3000p
24
![Page 26: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/26.jpg)
Agenda
Web-Frameworks
Ruby on Rails
Live-Demo
Erweiterungen
Fazit
25
![Page 27: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/27.jpg)
Session-Handling
Session-HashVariable: sessionVariable: session
Speichert Objekte über mehrere Requests hinweg
Anwendung: User-Objekt, Warenkorb ...Anwendung: User Objekt, Warenkorb ...Bsp.: session[:user] = User.find_by_id(id)
Flash-HashVariable: flash
Speichert Objekte für zwei aufeinander folgende Requests
Anwendung: Fehlermeldungen, Bestätigungen ...Bsp.: flash[:error] = „Password is incorrect!“
Im View: <%= flash[:error] %>Im View: <%= flash[:error] %>
26
![Page 28: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/28.jpg)
Validierung
Validationen werden im Modell definiert
B Pi M d ll ( \ d l \ i b)Bsp.: Pizza-Modell (app\models\pizza.rb)
# All d i Att ib t ü b d# Alle drei Attribute müssen angegeben werden
validates_presence_of :name, :price, :ingredients
# Das Attribut “Name” der Pizza soll eindeutig sein# Das Attribut Name der Pizza soll eindeutig sein
validates_uniqueness_of :name
# Das Attribut “Preis” soll positiv sein
validates_numericality_of :price, :on => :create,
:greater_than => 0, :message => "Price should be > 0."
27
![Page 29: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/29.jpg)
Live Demo
Web-Services und AJAX sind fester Bestandteil von RailsRails
Live-Demo
28
![Page 30: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/30.jpg)
Sicherheit in Rails
„SQL-Injection“
Person.find(:first, :conditions => “user = ‘#{params[:user]}’ ” + “and pw = #{p [ ]} p‘#{params[:password]}’”)
Keine Überprüfung!
Person.find(:first, :condition => [“user=? and pw=?”, user, pw])p , , p ])
Person.find_by_name_and_pw(:user], params[:password])
Implizite Überprüfung!
29
![Page 31: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/31.jpg)
Sicherheit in Rails
„cross-site scripting“ (XSS)
<%= @einWert %>
Keine Überprüfung!
html_escape() Methode von Ruby für alle Variablen verwenden, die erst bei der Generierung der Views ausgewertet werden
<%=h @einWert %>
Kein Einschleusen von HTML-Code und/oder Skripten möglich
30
![Page 32: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/32.jpg)
Performance
Langsamer alsJa a EE da keine VM orhanden (noch)Java EE, da keine VM vorhanden (noch)
Vergleichbar mitDjango (basiert auf Python)Django (basiert auf Python)
Besser alsSymfony (basiert auf PHP)Symfony (basiert auf PHP)
Caching/Load-Balancing etc. vorhandeng g
Umfangreiche Tools zur Performance-Optimierung g p gvorhanden
31
![Page 33: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/33.jpg)
Agenda
Web-Frameworks
Ruby on Rails
Live-Demo
Erweiterungen
Fazit
32
![Page 34: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/34.jpg)
Fazit
Heterogenität bei Web-Anwendungen
R b R il l W b F kRuby on Rails als Web-FrameworkRAD, XP, TDD, MVC als allgemeine Konzepte
Konvention über Konfiguration“ / DRY Prinzip als spezielle„Konvention über Konfiguration / DRY-Prinzip als spezielle Konzepte
Meta-Programmierung / ORM
Prototyp mit CRUD-Funktionalität
Online-Markplätze/Stadt-Portale als Beispiele für produktiven Einsatz
Mö li h V bMögliche VerbesserungenI18n (Thema der aktuellen Rails Versionen)
Ruby in einer VM? PerformanceRuby in einer VM? Performance
33
![Page 35: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/35.jpg)
Fazit
Vielen Dank für Ihre Aufmerksamkeit !
Fragen?
34
![Page 36: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/36.jpg)
Rails Verzeichnisstruktur
Verzeichnis Inhalt
app Alle wichtigen Bestandteile des MVC-Musters: Hilfs-, Kontroller- und Modell-pp g
Klassen, sowie sämtliche Views (*.html.erb)
config Konfigurationsdateien (z. B. database.yml)
db DB-Migrationsskripte, SQLite3 Datenbank-Datei (nach Anlegen)
doc Dokumente, die mit rdocs erstellt wurden
lib Zusätzliche Ruby-Bibliotheken/Erweiterungen
log Logfiles des WEBrick/Mongrel-Servers
public Öffentliches Wurzel-Verzeichnis des Web-Servers mit statischen Dateien (z. B.
Bilder, JavaScript, CSS, ...)
script Start-Skripte (z B Server-Start DB-Konsole Generatoren)script Start-Skripte (z. B. Server-Start, DB-Konsole, Generatoren)
test Test-Skripte, Unit-Tests, Funktionale Tests sowie Integrationstests
tmp Temporäre Dateien (z. B. Session-Dateien, Cache-Dateien)
35
tmp Temporäre Dateien (z. B. Session Dateien, Cache Dateien)
vendor Plug-Ins und andere Erweiterungen
![Page 37: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/37.jpg)
Rails Tags
Tag Beschreibung
<% RUBY CODE %> Code wird ausgewertet, keine Ausgabe% _ % g g
<%- RUBY_CODE -%> Code wird ausgewertet, keine Ausgabe, unterdrückt <br>
<%= RUBY_CODE %> Code wird ausgewertet und als String ausgegeben_
<%=h RUBY_CODE %> Code wird ausgewertet, Resultat wird durch html_escape gefiltert
<%# RUBY_CODE %> Code wird nicht ausgewertet (Kommentar)
36
![Page 38: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/38.jpg)
Web-Services in Rails
Version 1.0SOAP Web Ser icesSOAP Web-Services
Modul: Action Web Service
Ab Version 2.0Ab Version 2.0Übergang auf Representational State Transfer (REST)
RESTful Web-ServicesModul: Active Resource
Services vs. Resources
Modelle in Rails sind automatisch Ressourcen!
Manipulation durch HTTP-Requests POST, GET, PUT, DELETE
37
![Page 39: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/39.jpg)
Templates
Templates befinden sich unter app\views\
D i T l t E iDrei Template-EnginesEmbedded Ruby (ERb) [*.html.erb]
HTML-Templates mit über Tags eingebettetem Ruby-CodeHTML Templates mit über Tags eingebettetem Ruby Code<%=h RUBY_CODE %>
XML [*.xml.erb]XML-Templates für Web-Services
Ruby JavaScript (RJS) [*.js.rjs]Übersetzt Ruby Code zur Laufzeit in JavaScriptÜbersetzt Ruby Code zur Laufzeit in JavaScript
Controller steuert Views (vgl. MVC-Muster)Render :action => „Template name“„ p _
Anstatt :action auch :template oder :file möglich
38
![Page 40: Web-Frameworks: Ruby on Rails - wi1.uni- · PDF fileWeb-Frameworks: Ruby on Rails Thomas Jansing 05. Januar 2009 Software-Engineering Seminar (WS 2008/2009)](https://reader031.vdocuments.net/reader031/viewer/2022022423/5a9dec967f8b9aee528e1d0e/html5/thumbnails/40.jpg)
Layouts
Layouts unter app\views\layouts\Wieder Kon ention statt Konfig ration“Wieder „Konvention statt Konfiguration“Für gesamte Anwendung: application.html.erb
Für einzelne Controller: controller.html.erb
CSS Einbindung: <%= stylesheet_link_tag 'pizza' %>
Statischer Inhalt befindet sich unter public\\public\stylesheets
pizza.css
public\imagespublic\images
public\javascripts script.aculo.us (AJAX-Framework)
39
Prototype (AJAX-Framework)