Infopoint - Ruby on Rails - Jörg Wüthrich

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

C Sharp (C#) Martin Saternus Senior Student Partner
der Universität Oldenburg
Objektorientierte Programmierung
eXist Open Source Native XML Database
Ruby on Rails im Überblick
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java 2 Enterprise Edition (J2EE)
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Explizite und editierbare Metainformationen für Software Muster.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
Praktische Informatik Prof. Dr. Lutz Wegner
Software Design Patterns Extreme Programming (XP).
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte
Einführung in die Programmierung Datensammlung
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Web-Anwendungsentwicklung à la MVC. Übersicht Über Georg Heeg Ein industrielles Beispiel Web-Anwendungen aus Smalltalker-Sicht MVC für das Web Programmierdemo.
Marcus Haller & René Schulze
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Wir bauen uns eine Webapplikation!
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Java und Eclipse.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Typo3 Templates und TypoScript
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Ruby Refactoring Plug-In für Eclipse
Oliver Spritzendorfer Thomas Fekete
3. Juni 2003Moritz Petersen Minimales Markup und Templates zur Erstellung von strukturierten Texten Ein Zwischenbericht zur Diplomarbeit.
Infopoint - Ruby on Rails - Jörg Wüthrich Seite 1 Ruby on Rails Geschichte Ruby Rails Live – Demo.
EPROG Tutorium #3 Philipp Effenberger
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Datenanbindung in Webapplikationen
Einführung in PHP 5.
Geschichte - Entstehung - Was ist PHP? Einordnung - Allgemeines
Die Programmiersprache Ruby Seminarvortrag von Lia Schulze Dephoff 1.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
C++ FÜR cOMPUTERSPIELENTWICKLER
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
Deutscher Perl Workshop 2014 PORF Practice
Das IT - Informationssystem
OAuth 2.0 Ralf Hoffmann 03 / 2017
Das IT - Informationssystem
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Applikation-Mining als Methode zur Forms 9i-Migration
OOP II.
Jakarta Struts Quasi-Standard für JSP-basierte Entwicklung: Jakarta Struts Key Features von Struts: Implementierung des Action-Command-Pattern („Model.
Wesentliche Bestandteile:
Implementieren von Klassen
Objektorientierte Programmierung
 Präsentation transkript:

Infopoint - Ruby on Rails - Jörg Wüthrich Geschichte Ruby Rails Live – Demo 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Geschichte Ruby "Vater": Yukihiro “matz” Matsumoto 1993: Beginn der Arbeiten an Rubys 1995: 1. public Release von Ruby 1996: erlangt "Akzeptanz der Massen" (aktive Usergruppen, gefüllte Konferenzen)‏ aktuell: 1.8.6 Rails Gründer: David Heinemeier Hansson 2003: Beginn der Entwicklung (aus Basecamp abgeleitet)‏ 2004: 1. Release aktuell: 1.2.3 Ruby als Zusammenzug von matz' Lieblings-Sprachen: Perl, Smalltalk, Eiffel, Ada, Lisp Basecamp: Projekt-Verwaltungs Software 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich TIOBE Index www.tiobe.com TIOBE Index: "Popularität" einer Programmiersprache (nix mit Qualität oder Lines of Code zu tun)‏ basiert auf weltweiter Verfügbarkeit von geschulten Entwicklern Ausbildungs-Angeboten third party Herstellern Suche über Google, MSN und Yahoo Java 2004: Google hat ihr Ranking überarbeitet (künstliches Boosting unterdrückt); danach wurden MSN und Yahoo für den Index aufgenommen 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich "A dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write." (www.ruby-lang.org)‏ 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich objektorientiert (alles ist ein Objekt)‏ interpretiert (20KB executable in C geschrieben)‏ Open Source – "Ruby License" oder GPL "Object" als Wurzel Single Inheritance (+ "mixin"s)‏ Garbage Collection vollständig Kommandozeilen-orientiert wird mit Standard-Library geliefert 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Ruby - Code-Beispiel class Song attr_accessor :name # accessor methods @@plays = 0 # static field def initialize(name)# constructor @name = name # instance field end def play # instance method @@plays += 1 # "return" omitted song = Song.new('my Song')‏ puts song.name # => my Song puts song.play # => 1 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Ruby – etwas genauer (1)‏ streng und dynamisch typisiert es gibt "public", "protected", "private" protected: Aufruf aus der definierten Klasse und deren Subklassen private: nur innerhalb eines Objekts (mit implizitem "this" als Empfänger)‏ Operatoren können überladen werden Definitionen (Klassen, Methoden...) werden mit "end" abgeschlossen (kein { })‏ "()" bei Methoden-Aufrufen fehlen in der Regel Variablen-Scope über Naming-Convention streng: keine Automatische Typ-Konvertierung wie bei PHP (String nach int, falls möglich)‏ dynamisch: Typ-Fehler können erst zur Laufzeit festgestellt werden => erspart händische Typisierung => Laufzeitnachteile => Fehlersuche => Testing (alle Pfade durchlaufen)‏ 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Ruby – etwas genauer (2) alle Klassen sind "offen" jede Klasse (auch Object) kann jederzeit erweitert werden Closures Code-Blöcke mit Zugriff auf alle umliegenden Variablen (ähnlich wie anonyme Klassen in Java)‏ Iteration mit Blöcken Mixin – einbinden von Modulen ähnliche wie Interface in Java Variable Konstanten gibt zur Laufzeit eine Warnung... %w[dies sind Elemente einer Liste].each { |element| puts element } include Enumerable 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich "Web development that doesn't hurt" Model View Controller ActiveRecord ActionView ActionController Convention over Configuration Don't repeat yourself Unterstützung für DB-Migrationen / Unittesting ... 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Rails – MVC HTTP Request HTTP Response convention over configuration! 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Rails – don't repeat yourself ActiveRecord Methoden aus DB-Metadaten generiert ActionView Layout pro Model Template pro Methode Referenzen zwischen Templates Scaffolding generiert Gerüst einer Applikation macht viele "Fingerübungen" überflüssig neuer Controller neues Model-Element neue View neuer Testfall 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Live - Demo 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Rails - ActionController Zentrale Drehscheibe für Webrequests bestehen aus Actions, die als Request oder als Redirect aufgerufen werden können AddressController.list AddressController.create... rendern ein Template aus app/views def create @address = Address.new(params[:address])‏ if @address.save flash[:notice] = 'Address was successfully created.' redirect_to :action => 'list' else render :action => 'new' end 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Rails - ActionView Template-Renderer für Output 3 Varianten im Standard enthalten .rhtml – Mischung aus ERb ("eRuby") und Html .rxml – programmatische Alternative zu .rhtml .rjs – verwendet den JavaScriptGenerator enthält diverse "Helpers" (vergleichbar mit Tag Libraries)‏ <% for column in Address.content_columns %> <p> <b><%= column.human_name %>:</b> <%= @address.send(column.name) %> </p> <% end %> <%= link_to 'Edit', :action => 'edit', :id => @address %> | <%= link_to 'Back', :action => 'list' %> ERb bzw. eRuby ist im Ruby Standard enthalten und erlaubt das Einbetten von Ruby-Code in andere Dokumente (z.B. Html)‏ 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Rails – ActiveRecord (1)‏ Repräsentieren eine DB-Tabelle führen selbst keine Attribute, sondern leiten diese aus der Tabellen-Definition ab Änderungen werden nicht am ActivRecord-Objekt gemacht, sondern immer direkt auf der Tabelle Standard-Verhalten kann übersteuert werden Unterstützt optimistisches / pessimistisches Locking Beispiel für Übersteuerung: Pluralisierung der Tabellennamen mouse -> mice geht nicht automatisch def edit @address = Address.find(params[:id], :lock => true)‏ end 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Rails – ActiveRecord (2)‏ DB-Migrationen Verwaltung des Lifecycles von Tabellen Neue Tabelle Spalten hinzufügen / entfernen Index setzen ... Ruby Notation in Standard-Fällen SQL-Notation, falls benötigt class InitAdresslist < ActiveRecord::Migration def self.up create_table :addresses do |table| table.column :lastname, :string, :limit => 40 table.column :firstname, :string, :limit => 40 table.column :email, :string, :limit => 100 end ... 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Rails – ActiveRecord (3)‏ Assoziationen ActiveRecord Zugriff class Dvd < ActiveRecord::Base belongs_to :category end class Category < ActiveRecord::Base has_many :dvd end dvdsWithCategories = Dvd.find(:all, :include => :category)‏ puts dvdsWithCategories.title # => "Bourne Identity" puts dvdsWithCategories.category.name # => "Action" 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Rails – ActiveRecord (4)‏ Validation class Address < ActiveRecord::Base protected def validate errors.add_on_empty %w(first_name last_name)‏ errors.add("email", "has invalid format (use xxx@uu.oo)")‏ unless email =~ /[a-z]*@[a-z]*\.[a-z]*/ end 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Warum Ruby on Rails? Wenig Konfiguration notwendig Kaum Wiederholungen, relativ sauberer Code voll objektorientiert DB-Anbindung simpel Web 2.0 "ready" Integriertes Unittesting Integriertes Staging Open Source mit aktiver Community relativ jung; Erfahrungen mit wirklich grossen Projekten fehlen langsamer als PHP oder ASP 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Referenzen www.ruby-lang.org - die Ruby Webseite http://rubyonrails.org/ – die Ruby on Rails Webseite http://wiki.rubyonrails.org/rails - Beantwortet viele Fragen rund um Ruby on Rails http://homepage2.nifty.com/sakazuki/rde_en/index.html - RDE (Ruby Development Environment)‏ http://www.aptana.com/ - Eclipse basierte Ruby on Rails Entwicklungs-Umgebung http://www.martinfowler.com/eaaCatalog/activeRecord.html - das ActiveRecord Pattern http://www.meshplex.org/wiki/Ruby/Ruby_on_Rails_programming_tutorials - guter Überblick über die Möglichkeiten von Ruby on Rails 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich backup 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Ruby Tools ruby.exe – Interpreter rake.bat – ruby make rdoc.bat – Ruby Doc analog zu javadoc -> output als html, chm, ri, xml)‏ ri.bat – Ruby Information ähnlich "man" auf Unix irb.bat – interactive ruby gem.bat – package manager 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich

Infopoint - Ruby on Rails - Jörg Wüthrich Rails - Testing Unit Tests Test für einzelnes Modul (ActiveRecord)‏ Functional Tests Test der Actions eines Controllers separat Integration Tests Test des Zusammenspiels von mehreren Controllern und Actions 08.08.2007 Infopoint - Ruby on Rails - Jörg Wüthrich