Ruby on Rails. Im Rahmen des Seminares Programmiersprachen SS09 Steffen Schildknecht

Ähnliche Dokumente
Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Ruby on Rails. Thomas Baustert Ralf Wirdemann Alternative zur Web-Entwicklung mit Java?

Testgetriebene Web-Entwicklung mit Ruby on Rails

Ruby on Rails. Geschichte Ruby Rails Live Demo

Groovy on Grails. Informatik-Seminar WS06/07. Alexander Treptow. Groovy on Grails Alexander Treptow (minf2622) 1

GIS mit Ruby on Rails

Ruby on Rails. Florian Ferrano Ralf Heller Markus Nagel

Grundlagen der Web-Entwicklung

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Martin Marinschek- Wolfgang Radinger. Ruby on Rails. Einstieg in die effiziente Webentwicklung. [Tu dpunkt.verlag

Schnell performante Web-Applikationen entwickeln. Markus Zapke-Gründemann LinuxTag 2012

Algorithmen und Datenstrukturen

Scala & Lift. Ferenc Lajko

Created by Angelo Maron

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen

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

Web-Frameworks: Ruby on Rails

Ruby - Objektorientiertes Scripting, aber richtig!

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Klassen und Objekte. Klassen und Objekte

Einführung in Ruby on Rails

Inhaltsverzeichnis. Einleitung

Kompendium der Web-Programmierung

Grundlagen der Web-Entwicklung INF3172

Repetitorium Informatik (Java)

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Skriptsprachen am Beispiel Ruby. Referat im Rahmen des Seminars Programmiersprachen Erik Weihrauch

Ruby. Erfinder: Yukihiro Matsumoto Japan 1993 Einflüsse: Smalltalk Perl Eigenschaften: Objektorientiert Interpretiert

Einführung in C# Teil 1. Matthias Nübling

Programmieren im Web 2.x

Ruby. Programmieren mit Zucker. Thomas Kühn

I like to be the yes-guy Gregg Pollack Founder & CTO at Envy Labs Orlando, Florida Area

Inhaltsverzeichnis. vii

Persistenz. Ralf Gitzel

Web-Anwendungsentwicklung mit dem Delivery Server

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Ruby on Rails and Rapid Application Development

Datenbankapplikationen mit Ruby on Rails. Datenbanksysteme 2009 Universität Osnabrück Gastvortrag von Nicolas Neubauer

3 Klassen, Attribute, Methoden

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Fachhochschule Wiesbaden - Fachbereich DCSM. Skriptsprachen. Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Javakurs 2013 Objektorientierung

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Java - Webapplikationen

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Ruby. Überblick. Prinzipien, Konzepte, Ziele. Methoden. Blöcke & Closures. Klassen, Attribute & Objekte. Build-In Klassen. Module.

C++ - Objektorientierte Programmierung Konstante und statische Elemente

Django The Web framework for perfectionists with deadlines.

Scala. Funktionale (Zustandslose) Objekte

Java Einführung Vererbung und Polymorphie. Kapitel 13

Die Alternative zum Web-Form Modell

Multimedia im Netz Wintersemester 2012/13

Thomas Matzner Berater für Systemanalyse Couchbase. Java User Group München

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Einstieg in die Informatik mit Java

Objektorientiertes Programmieren

ruby Eine kurze Einführung

Grundkurs MySQL und PHP

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

Datenmanagement in Android-Apps. 16. Mai 2013

Softwarepraktikum - Verteidigung Entwurf LDAP-Interfaces für majordomo und Web

Agenda. Oliver Korovljević [ ] 2/50

Aufbau einer Web 2.0 Community mit Grails. DOAG Konferenz + Ausstellung 2010 Nicole Hoock, esentri consulting GmbH

jetzt lerne ich ASP.NET Dynamische Webseiten mit ASP.NET 1.1 mit Ausblick auf ASP 2.0 WENZ KORDWIG TRENNHAUS

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Überblick. Klassen Optionale Typen DOM. Optionale Parameter Klassen. Einführung. 2 Motivation 3 Werkzeuge 4 Demonstration 5 Dart

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal

Klausur Grundlagen der Programmierung

Aufbau einer Web 2.0 Community mit Grails

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

PHP 6 Beliebte Webskriptsprache wird erwachsen. Linux User Group Bern René Moser <mail@renemoser.net>

Skalierbare Webanwendungen mit Python und Google App Engine

C# im Vergleich zu Java

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Skriptum Bauinformatik SS 2013 (Vorlesung IV)

Grails. Weiterführende Themen zu Internet- und WWW-Technologien. Matthias Springer. 06. Juni 2011

C++ - Objektorientierte Programmierung Vererbung

Dynamische Webseiten mit PHP. Oder: LAMP - The open way

Projekt Weblog :: Integration

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

Klassenvariablen, Klassenmethoden

O/R Mapper. O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010

JSP Übung. JEE Vorlesung Teil 7. Ralf Gitzel

Programmieren lernen in ASP.NET mit C#

Ruby on Rails Active Record

Einstieg in die Informatik mit Java

Programmieren in Lua

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Einstieg in die Informatik mit Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Programmieren I. Kapitel 8. Vererbung

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

ActiveRecord-Iterator

Einstieg in die Informatik mit Java

DHBW Stuttgart, Informatik, Advanced SW-Engineering Aug Programmierung

Einstieg in die Informatik mit Java

Transkript:

Ruby on Rails Im Rahmen des Seminares Programmiersprachen SS09 Steffen Schildknecht

Einleitung Ruby Interpretierte, dynamische Skriptsprache Everything is an object human-oriented Ruby on Rails Serverseitiges Framework für Datenbankgestützte Webapplikationen Model-View-Controller Struktur Don't repeat yourself Convention over configuration

Ruby Konzept und Implementierung: Yukihiro Matsumoto, 1995 Open Source Interpreter Keine Spezifikation 2000: Programming Ruby, Pragmatic Programmers Verwandschaften Smalltalk: Dynamik, Objektorientierung - Kontrollstrukturen Perl: Semantische Eigenschaften (Regex), Standardbibliothekenumfang Python als Negativbeispiel: Aufgesetzte Objektorientierung

Ruby - Charasterika Alles ist ein Objekt, keine primitive types Skriptsprache: Interpretiert, großer Standardbibliothekenumfang Einfachvererbung, Mixins Variablen = Referenzen auf Objekte Typenlos Duck Typing, stark und dynamisch If it walks like a duck and quacks like a duck, it's probably a duck Keine impliziten Typkonversionen Type-check zur Laufzeit

Ruby - Charasterika II Anwendung zur Laufzeit erweiterbar, eval Reflektive Eigenschaften Object Space Unterstützte Methoden, Vererbungsrelationen Exceptions Objektorientiert (Java), weitere Ablaufbefehle Garbage Collector Mark-and-sweep Ruby Threads Green threads

Ruby - Syntax C/Java Familie Zeilenorientiert, befehlsabschließende Semikolons optional Runde, eckige Klammern oftmals optional Namenskonventionen zur Variablenbenennung variable = lokale Variable @variable = Instanzvariable @@variable = Klassenvariable $variable = Globale Variable Analog: Konstante Syntactic Sugar : Methodennamen wie Operatoren

Ruby - Semantik Keine Initialisierung von Variablen nötig Duck Typing: Prüfe Objekt nur auf Methode, nicht Typ Verminderte Typsicherheit Fehler tritt erst zur Laufzeit auf Jede Variable eines Objekts privat attr_accessor, attr_reader, attr_writer

Ruby - Semantik - Blöcke Block = Codefragment Nimmt Parameter entgegen Wird als Parameter übergeben Aufruf über yield def blocktest for i in 0..10 return i if yield(i) end end result = blocktest do x x**2 > 20 end Weiteres Beispiel: Array.each Instanziieren eines Blocks: Proc-Objekt Eigener Variablenkontext und -zustand

Ruby - Semantik - Mixins Mixin Einfügen von Instanzmethoden in Klassen Effizientes Erweitern von Klassendefinitionen Keyword include Beispiel: Comparable class Song include Comparable def initialize(name, artist, duration) @name = name @artist = artist @duration = duration end def <=>(other) self.duration <=> other.duration end end Song unterstützt nun zusätzlich <,<=,>,>=,==. Mixin agiert effektiv als Superklasse.

Ruby on Rails Serverseitiges Framework zur Entwicklung von Datenbank-gestützten Webanwendungen Ruby Implementierung Model-View-Controller (MVC) Struktur 2003 von David Heinemeier Hansson erstellt Open Source

Ruby on Rails - Convention over Configuration Intelligente Standards Vermeiden manueller Konfiguration (Routings) Stattdessen Namenskonventionen Für Beziehungen im MVC-Modell Aussagekraft von Name und Ort einer Datei Beispiel: Erzeugen eines Models Person erzeugt Tabelle People

Ruby on Rails Don't repeat yourself (DRY) "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system." Korrekte Kapselung Ausschliessen von Codedopplung Durchgehend MVC-legitime Orte zum Speichern mehrfachgenutzten Codes

Ruby on Rails Model View Controller Model Repräsentiert Klasse von Objekten (Entity-Set, Tabelle) Instanziiertes Model repräsentiert Objekt (Entity, Zeile) View Generiert aus Daten vom Controller User-Interface Leitet User-Eingaben an Controller weiter Controller Nimmt User-Eingaben aus View entgegen Operiert auf Models Gibt Daten an View zurück Sitz der modelübergreifenden Business-Logik

Ruby on Rails Model View Controller II 1. Aufruf einer URL/eines Formulars wird zu einer Methode ( Action ) eines Controllers geroutet. 2. Action operiert auf einem oder mehreren Models. Modelinstanzen werden aus der DB gelesen. 3. Action stellt einem View Daten zur Verfügung, welcher diese in einer geeigneten Repräsentation darstellt.

Ruby on Rails - Model - Active Record ORMapper: Model-Objekte/Klassen <-> Relationale DB DRY: Attribute von Objekten nur in Spalten gespeichert Dynamisch erzeugte Setter und Getter Veränderung an Model-Attributen über Migration Pure Ruby Skript Abstrahiert von Eigenheiten verschiedener DBs Methoden zum Erstellen, Finden, Updaten und Löschen von Objekten Validierungen Beziehungen zu anderen Models (Relationship) Demo: Erzeugen DB, Model, Validierung, Migration, console

Ruby on Rails - Controller Action Controller Operiert auf Model-Objekten Ein Controller mehrere Actions z. B. Create, Read, Update, Delete (CRUD) Navigieren zwischen Views URL-Routing Standard: controller/action/id Speichern von Daten in Session-Hash Demo: Erzeugen Controller mit Actions readall, create, delete

Ruby on Rails - View - Action View HTML-, XML-Dokument mit Inline Ruby <%... %> zum Steuern des Programmflusses <%=... %> zum Einfügen von HTML-Elementen Zugriff auf im Controller definierten Instanzvariablen Helper die das Erstellen von Formularen und anderen HTML-Elementen erleichtern, Script.aculo.us DRY: Auslagern von Seitenlayouts in Layoutdatei Demo: View mit Liste, Formular und Löschfunktion

Ruby on Rails - Architektur

Ruby on Rails - Ausblick Ruby Keine Desktop-Anwendungen Performance-Schwierigkeiten Jruby, IronRuby Ruby on Rails RIA, Web 2.0,... Hype Twitter: skalierbar, zuverlässig einsetzbar Duck-Typing: Backend zu Scala portiert